WebsiteBaker Support (2.13.x) > Hilfe & Support (deutsch)

Leerzeile zum Start im Content (keine Ahnung wo die herkommt)

<< < (2/3) > >>

sternchen8875:

--- Quote from: markherrmann on February 06, 2023, 08:22:09 PM ---Grundsätzliche Frage, mache ich das so falsch? Ich spiel ungern an den Installationsfiles rum.

--- End quote ---

Nein, es ist nichts falsch daran. Was richtig und falsch ist, bestimmst du als Nutzer ganz allein.
Auf Grund der wachsenden Inhalte und der Thematik oben angeführter Webadresse vermute ich, das dort ein umfangreicheres Webprojekt entstehen soll. Auf Grund der Einfachheit verwendest du dafür ein CMS und bei dem geht es vorrangig um die  Darstellung von Inhalten.
XML ist da eher auf Datentransport ausgelegt, weniger auf ein schönes Design und leichte Bearbeitung, siehe eben eine Sitemap. Sie wird von Suchmaschinen zur Indizierung genutzt, eine Besucheransicht mit obigen Code macht wenig Sinn. Natürlich kann man es nun optisch aufbereiten, aber einen Mehrwert an Informationen bringt es nur für dich und die Suchmaschine. Aber natürlich gibt es auch andere Dinge, die man mit XML machen kann und bei denen es dann sehr wohl um Inhalte geht.
Ich selbst nutze XML nur noch im Rahmen einer Google-Sitemap oder als RSS für meine Projekte, bin da also eher Anfänger.


--- Quote from: markherrmann on February 06, 2023, 08:22:09 PM ---Gibt es eine andere herangehensweise um XML oder RSS auszugeben und dabei die Prüfroutinen von WB nicht zu stressen?

--- End quote ---

Fragst du mich persönlich,  wäre ein Modul, in das man, wie bei News oder Wysiwyg Daten eingibt, die man dann über XML oder RSS wieder ausgibt, meine erste Wahl. Dabei lassen sich alle Funktionen des CMS nutzen wie Datenbankobjekt, Datenbankverbindung, aber auch alles andere, was sonst nur "unter der Haube" läuft, z.b. das show_menu2(), das du oben ja schon verwendest. Ich persönlich ziehe für die Ausgabe dann die Bordmittel vor, sprich: PHP, HTML, Twig, ich erinnere mich aber, das es früher hier mehr Kollegen gab, die den ganzen Content über XML ausgegeben haben.

Bei einer anderen Möglichkeit würde ich CMS ein CMS sein lassen und das, was ich brauch, separat vom CMS laufen lassen. Also praktisch so, als wäre kein CMS da.

Zu meinen im letzten Post gezeigten Code-Ausschnitt aus der frontend.functions. php noch eine Erläuterung:
Der da von mir auskommentierte Code war ein Community-Wunsch. Dabei ging es darum, jeden Block im Frontend  separat ansprechen zu können, z.b. um ein One-Page-Projekt umzusetzen oder JS-Menüs. Im Prinzip also ein dynamischer Anker. WB hat zwar die Möglichkeit, solchen Anker in den WB-Optionen anzugeben, der wäre aber statisch. WB hat auch die Möglichkeit, solchen Anker mit dem Wort none in den WB-Optionen -> Erweiterte Optionen -> Servereinstellungen -> Abschnitts-Anker-Text zu deaktivieren, aber im Quellcode bleibt dann diese Leerzeile übrig, die in HTML nicht stört, aber dein XML ungültig macht. Meine gezeigte Änderung ist das, was es früher in den WB-Versionen bis WB 2.8.3 gab.

Das nur zur Erklärung, was dieses Stück auskommentierter Code gemacht hätte und was die Änderung für "Folgen" hätte

markherrmann:
Vielen Dank für deine Ausführungen warum WB das so macht (find ich echt gut), ich kannte auch die alten Versionen von WB und irgendwann später mal kam dieses DIV dingens auf.

In meinem Anker steht auch "none". Das aber ein DIV gemacht wird war mir nicht klar, weil ich sehs ja auch nicht im Quellcode der Ausgabe.
Aber hey jetzt funktioniert alles gut.

Das einzig für mich störende, es läuft bis zum nächsten Update. ;-)
Aber der Tip von oben war echt Goldwert.

Vielleicht sollten WB Entscheider berücksichtigen, dass nicht nur HTML ausgegeben wird.

DANKE DANKE DANKE  (Y) (Y) (Y)

sternchen8875:

--- Quote from: markherrmann on February 07, 2023, 07:55:06 PM ---Vielleicht sollten WB Entscheider berücksichtigen, dass nicht nur HTML ausgegeben wird.

--- End quote ---

Ich weiß garnicht, wann das gewesen, ich glaube, WB 2.10, vielleicht auch noch eher. WB 2.10 war in 2017 und du bist jetzt der erste, der dort ein Problem hat. Und mal ehrlich, wenn du das Problem nicht gemeldet hättest, wäre da nie und nimmer jemand drüber gestolpert ;-)
Der Haken an diesem mit "none" auskommentierten Block-Div ist, das eine Leerzeile übrig bleibt, die man im HTML-Quelltext auch nicht hat, von daher kann man niemanden einen Vorwurf machen. Mit heutigem Wissen ist es aber eine Kleinigkeit, auch vom Aufwand her, das bissl Code so umzustellen, das es auch für deine Variante des Outputs ohne Probleme läuft.
Ob das jetzt schon zur nächsten Version oder Patch (PHP 8.2 ready) passiert, will ich nicht versprechen, denn der ist schon fast in den Startlöchern. Aber dann weißt du, wie du das lösen kannst
Ich werde mal ein Ticket aufmachen, dann schauen wir weiter. Rückmeldung erfolgt dann von mir.

hgs:
Die "Endscheider" lesen mit und haben es in das Ticketsystem eingetragen.
Eine Quikfix Lösung steht ja auch da, vielleicht kannst du das mal testen und Feedback geben.

markherrmann:
Hi, der erste Lösungsansatz von sternchen8875 hatte super funktioniert. Ich hab das Originalfile "frontend.functions. php" zurück gespielt und dann den letzten Code aus dem Ticket an Pos. 299 wie beschrieben abgeändert:


--- Code: ---                                    $sAfterContent  = ($bPrintAnchor ? '</div><!-- INFO '.$module.$section_id.' -->' : '');
                                    // echo $sContent = $sBeforeContent."\n".$sContent."\n".$sAfterContent."\n";
echo $sContent = \ltrim($sBeforeContent."\n".$sContent."\n".$sAfterContent."\n", "\n");

--- End code ---


Bringt jetzt bei der ersten Ausgabe der HTML Startseite folgende Fehlermeldung:

There was an uncatched exception
Failed opening required '/...../framework/frontend.functions.php' (include_path='.:/opt/RZphp80/includes')
in line (73) of (/index.php):

Der XML-Inhalt dagegen läuft problemlos...
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://argeforum.de</loc>
<lastmod>2023-02-09</lastmod>
<changefreq>weekly</changefreq>
</url>
...


Nach dem manuellen Aufruf der XML-Seite habe ich die Startseite nochmal geladen und alles wurde fehlerfrei geladen. ?!?
Vielleicht hätte ich den Cache des Chrome nochmal leeren sollen, habe noch einmal im FF (privater Modus) die Startseite (HTML) aufgerufen, keine Fehler, danach die XML https://argeforum.de/pages/sitemap/xml-sitemap.php direkt angesprochen... ebenfalls keine Fehler. Nur 3 Leerzeilen am Ende

Dann test, der RSS Inhalte ist identisch...
läuft aber 3 Leerzeilen am Ende https://argeforum.de/pages/rss.php

Ich schau mal noch schnell in den Quellcode fürs XML ob ich die Leerzeilen nicht selbts produziere (für eine davon bin ich wohl selbst verantwortlich) hier der Code:


--- Code: ---function readNewsPosting($in_reverse_count=1) {
// Diese Funktion liest die letzten (in_reverse_count) News aus der Datenbank
// Rückgabe als Array
global $database;
$out = array();
$cnt = 0;
$sql_command = "SELECT title, content_short, link, published_when FROM ".TABLE_PREFIX."mod_news_posts";
$sql_command .= " WHERE active = 1 ORDER BY posted_when DESC";
$sql_command .= " LIMIT ".$in_reverse_count;
$get_db = $database->query($sql_command);
$db_found = $get_db->numRows();
if ($db_found > 0) {
while ($db = $get_db->fetchRow()) {
$out[$cnt]["name"] = $db["title"];
$out[$cnt]["desc"] = $db["content_short"];
$out[$cnt]["link"] = WB_URL.PAGES_DIRECTORY.$db["link"].'.php';
$out[$cnt]["time"] = $db["published_when"];
$cnt++;
} // end while
} // end if db_found
return $out;
} // end function

// *** MAIN *************************************************************
date_default_timezone_set('Europe/Berlin');
$time_now = time();
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n";
// MENU1
ob_start();
show_menu2(1, SM2_ROOT, SM2_ALL, SM2_ALL|SM2_ALLINFO, '[url];', '', '', '', false, false);
$array_menus = explode(";", ob_get_contents());
$array_menus_removed = array_pop($array_menus); // das letzte Element aus Menus war immer leer (deswegen fliegt es raus)
$array_posts = readNewsPosting(20);
ob_end_clean();
// Basemenüs
for ($i=0; $i<(count($array_menus)); $i++) {
echo '<url>'."\n";
echo '<loc>'.$array_menus[$i].'</loc>'."\n";
echo '<lastmod>'.date("Y-m-d", $time_now).'</lastmod>'."\n";
echo '<changefreq>'.'weekly'.'</changefreq>'."\n";
echo '</url>'."\n";
} // end for
// News Postings
for ($i=0; $i<(count($array_posts)); $i++) {
echo '<url>'."\n";
echo '<loc>'.$array_posts[$i]["link"].'</loc>'."\n";
echo '<lastmod>'.date("Y-m-d", $time_now).'</lastmod>'."\n";
echo '<changefreq>'.'weekly'.'</changefreq>'."\n";
echo '</url>'."\n";
} // end for

// MENU2
ob_start();
show_menu2(2, SM2_ROOT, SM2_ALL, SM2_ALL|SM2_ALLINFO, '[url];', '', '', '', false, false);
$array_menus = explode(";", ob_get_contents());
ob_end_clean();
for ($i=0; $i<(count($array_menus)-1); $i++) {
echo '<url>'."\n";
echo '<loc>'.$array_menus[$i].'</loc>'."\n";
echo '<lastmod>'.date("Y-m-d", $time_now).'</lastmod>'."\n";
echo '<changefreq>'.'weekly'.'</changefreq>'."\n";
echo '</url>'."\n";
} // end for

echo '</urlset>'."\n";
--- End code ---

FETTES DANKE ANS #DEV TEAM !!!



Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version