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

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

(1/3) > >>

markherrmann:
Hi Leute,
meine Inhalte beginnen immer mit einer Leerzeile (hier zu sehen: https://argeforum.de/pages/sitemap/xml-sitemap.php).

ich hab keinen Plan wieso. Vielleicht kennt sich jemand damit aus.

Ein paar Daten zur Konfig und Code.

Das Web läuft unter PHP 8.0 (Strato).

Das Template ist denkbar einfach:

--- Code: ---<?php page_content(1); ?>
--- End code ---

Der Code, der das XML generieren soll:

--- Code: ---header('Content-Type: text/xml');
date_default_timezone_set('Europe/Berlin');
$time_now = time();
ob_start();
show_menu2(1, SM2_ROOT, SM2_ALL, SM2_ALL|SM2_ALLINFO, '[url];', '', '', '', false, false);
$array_menus = explode(";", ob_get_contents());
ob_end_clean();
echo '<'.'?xml version="1.0" encoding="UTF-8"'.'?'.'>'."\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n";
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 ---


sternchen8875:
Zeig mal bitte die Zeilen um diesen Aufruf <?php page_content(1); ?>

Das XML selbst ist in Ordnung und erzeugt keine Leerzeile, wenn ich es an anderer Stelle teste. Von daher kann es nur an deiner Umgebung liegen

markherrmann:
In meinem Template stand nur
--- Code: ---<?php page_content(1); ?>
--- End code ---
keine Leerzeichen nix.

Zum testen bin ich jetzt mal anderes rangegangen. Ich habe ein neues Template namens xml2 erstellt wir folgt:
in der index.php steht jetzt:


--- Code: ---<?php header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; ?>
<?php page_content(); ?>
--- End code ---

Meinen Quellcode habe ich entsprechend abgeändert:

--- Code: ---date_default_timezone_set('Europe/Berlin');
$time_now = time();
ob_start();
show_menu2(1, SM2_ROOT, SM2_ALL, SM2_ALL|SM2_ALLINFO, '[url];', '', '', '', false, false);
$array_menus = explode(";", ob_get_contents());
ob_end_clean();
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n";
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 ---

Es geht jetzt, weil vor header nix mehr steht, aber sauber ist es nicht... die Leerzeile ist noch da (steht nur woanders).
Ergebnis der Abfrage ist jetzt:

--- Code: ---<?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-04</lastmod>
<changefreq>weekly</changefreq>
</url>
...
</urlset>

--- End code ---

Was noch gelaufen ist...
Ich erinnere mich, ich musste in der WB Installationsdatei eine Zeile auskommentieren. Sonst bricht die Ausgabe von XML mit Fehlermeldung ab.

Ich habe in der Datei: /modules/output_filter/Filters/filterCssToHead.php die Zeile: #67
--- Code: ---throw new \Exception('malformed document created, missing head area');
--- End code ---
mit
--- Code: ---//
--- End code ---
auskommentiert. WB prüft die Ausgabe, das war meine einzige Möglichkeit selbst zu bestimmen was ausgeliefert wird.

sternchen8875:

--- Quote from: markherrmann on February 04, 2023, 09:48:40 AM ---die Leerzeile ist noch da (steht nur woanders).

--- End quote ---
die erzeugst du selbst mit dem \n am Ende der Zeile, das benötigst du aber wiederum für dem XML-konformen Output

--- Code: ---echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; ?>
--- End code ---

Das Problem ist aber ein anderes. WB erzeugt um jeden Block page_content() ein DIV. Dieses DIV enthält Namen des Moduls, eine CSS-Klasse dazu usw Das ist der Inhalt deiner Zeile 1 im alten, XML-konformen Code. Das wären diese auskommentierten Zeilen auf der frontend.functions. php, Zeilennummern im Bild

Wenn du deinen Spaß so auskommentierst wie in meinem Bild und die letzte Zeile einfügst, erhälst du eine XML-konforme Ausgabe, aber das schließende

--- Code: ---echo '</urlset>'."\n";
--- End code ---
nicht vergessen. (sicher Kopierfehler)


P.S.: aktuell verstehe ich dein Vorhaben noch nicht. Obige Lösungswege würden wohl eine XML-konforme Sitemap erzeugen, das CMS als solches aber für alles andere unbrauchbar machen, aber du hast da sicher einen Plan.
Geht es nur um die Sitemap, gäbe es auch andere Lösungen


--- Quote from: markherrmann on February 04, 2023, 09:48:40 AM ---Ich erinnere mich, ich musste in der WB Installationsdatei eine Zeile auskommentieren. Sonst bricht die Ausgabe von XML mit Fehlermeldung ab.

Ich habe in der Datei: /modules/output_filter/Filters/filterCssToHead.php die Zeile: #67
--- Code: ---throw new \Exception('malformed document created, missing head area');
--- End code ---
mit
--- Code: ---//
--- End code ---
auskommentiert. WB prüft die Ausgabe, das war meine einzige Möglichkeit selbst zu bestimmen was ausgeliefert wird.

--- End quote ---

eine normale Reaktion, wenn man vom Standard abweicht. WB prüft mit genanntem Filter die HTML-Kompatibilität, in der es z.b. heißt: die Struktur ist

--- Code: ---<html>
    <head>
    </head>
    <body>
    </body>
</html>
--- End code ---
Allein dieses Schema passt nicht, von Rest red ich garnicht.

markherrmann:
Danke Dir für die ausführliche Beschreibung. Ich werde kurzfristig mal schauen, dass ich die Files anpasse.

Du schreibst:
--- Quote ---eine normale Reaktion, wenn man vom Standard abweicht. WB prüft mit genanntem Filter die HTML-Kompatibilität, in der es z.b. heißt: die Struktur ist
--- End quote ---
...
--- Quote ---Allein dieses Schema passt nicht, von Rest red ich garnicht.
--- End quote ---

Ich gebe nicht immer HTML aus, manchmal produziere ich auch RSS Feeds, hier jetzt XML als Sitemap, manchmal initiiere ich so auch einen Download.
Grundsätzliche Frage, mache ich das so falsch? Ich spiel ungern an den Installationsfiles rum.

Gibt es eine andere herangehensweise um XML oder RSS auszugeben und dabei die Prüfroutinen von WB nicht zu stressen?

Gruß und schönen Abend.

Navigation

[0] Message Index

[#] Next page

Go to full version