WebsiteBaker Community Forum
WebsiteBaker Support (2.13.x) => General Help & Support => Hilfe & Support (deutsch) => Topic started by: sabo-! on August 04, 2023, 03:06:40 PM
-
Hallo zusammen,
auf einer Unterseite nutze ich das News-Modul (News v4.0.0). Vor dem Upgrade hat alles noch prima funktioniert. Seit WB 2.13.3 r166 mit PHP 8.0 erscheint statt dem Inhalt folgende Fehlermeldung:
There was an uncatched exception
malformed document created, missing head area
in line (67) of (/modules/output_filter/Filters/filterCssToHead.php):
Wie die Zeile in der Datei aussieht füge ich bei.
Wenn ich die Website auf ein Standard-Theme umstelle, erscheint zwar diese Fehlermeldung nicht, aber der Inhalt aus dem News-Modul wird trotzdem nicht angezeigt. Die anderen "normalen" Seiten schon.
Für Tipps wäre ich dankbar.
Viele Grüße
Sabo
-
Aufgabe dieses Filters ist eine HMTL-konforme Ausgabe des Codes. Dabei wird versucht, Teilbereiche wie z.b. eine Link zu einer CSS-Datei oder ein style-Element in den HEAD-Bereich der Seite zu befördern. Dafür wird das schließende </head> gesucht und unmittelbar davor der betreffende Code eingefügt. Gelingt dies nicht, erscheint der angezeigte Fehler.
Zur Behebung des Problem wäre es am Einfachsten, wenn man Einblick in die Seite inkl. der News-Inhalte hätte.
Betrifft dein Problem auchschließlich die News-seite, liegt nahe, das von dort solch auslösende Elemente dargestellt werden sollen.
Ein erster Schritt wäre erstmal die Validierung des Quellcodes mit funktionierender Ausgabe auf Seiten wie z.b. hier -> https://validator.w3.org/
-
Usualy this message appears to me when having extra </div> closing tag so it closes body and htm tag bit there is still content. Inspect your output first
-
Hallo,
also innerhalb der News-Beiträge sind keine div-Containter. Im Template scheinen alle div-Container geschlossen zu sein.
Das Ergebnis von validator.w3.org füge ich bei. Ich habe die betreffenden Stellen aus dem Template reinkopiert.
Innerhalb der News-Beiträge sind diese Tags enthalten: <br />. Wenn ich den Slash rauslösche, fügt das System diesen nach dem Speichern automatisch wieder ein.
Wie geschrieben, erscheint die Fehlermeldung nur auf den News-Seiten, auf den anderen Seiten nicht.
Hat noch jemand einen Tipp für mich, wie ich das lösen könnte?
Viele Grüße
Sabo
-
Irgendwie scheint in dem Inhalt von page_contenT() ein div zuviel zu sein. Wenn es am News liegt müsste ich das wissen, dann könnte ich das für die kommende Version fixen.
Ist das die Kommentarfunktion?
Gruss
Dietmar
-
Hallo Diemar,
vielen Dank für Deine Antwort.
Möchtest Du über PN einen Login zur Website, um Dir das anzusehen?
Viele Grüße
Sabo
-
was crnogorac081 meinte, wäre das Ausgabe-Template in den News-Optionen, das dort (jetzt) ein div zuviel dabei ist. Also ggf mal den Code des aktuell eingestellten Layout's posten
Innerhalb der News-Beiträge sind diese Tags enthalten: <br />. Wenn ich den Slash rauslösche, fügt das System diesen nach dem Speichern automatisch wieder ein.
liegt daran, das der Wysiwyg-Editor kein HTML5 kann, sondern nur HTML4
-
Hallo zusammen,
ich füge die index-Datei des Templates bei.
Viele Grüße
Sabo
-
Mißverständnis
benötigt wird dieses Template hier aus den News-Optionen (im Foto die Variante mit table, bei dir wohl mit einem div)
https://i.gyazo.com/df7361a6f884ffadff49c93e77efe548.png
-
Jetzt habe ich verstanden. Anbei das Template aus den News-Optionen.
-
da ist kein Fehler zu sehen - wäre auch zu einfach gewesen :-(
Da du offensichtlich nicht möchtest, das jemand direkt und live drauf schaut, hab ich mir den Filter noch mal angeschaut. Vielleicht hilft dir das bei der Problemsuche
Der Outputfilter startet bei jedem Klick im Frontend, alles, was dort ausgegeben werden soll, muß diese Filter einmal durchlaufen. Dabei werden dann z.b. Mailadressen verschlüsselt, WbLinks aufgelöst oder Droplets abgearbeitet.
Der Filter CSStoHead sucht in der gesamten Ausgabe nach Codezeilen, die einen Link enthalten zu Dateien, die über diese Methode eingebunden werden, also nach der Kombination (\<link[^>]*?"(text\/css|stylesheet)"[^>]*?\/?\> oder eben nach einem abgeschlossenem style-Block, also <style[^>]*?\>.*?\<\/style\>, aber eben keine Inline-Style's
Findet er solchen Code in der Ausgabe, möchte er ihn in den Head-Bereich verschieben, wo er lt. Definition eben hingehört. dazu sucht der Filter die Struktur der index.php des genutzten Templates durch, wo es zwei mögliche Bereiche gibt, 1: innerhalb von <head></head>, dann 2. innerhalb von <body></body>
Jeder mögliche Treffer sollte dann direkt in die Zeile vor dem schließendem </head> geschoben werden.
Findet er aber diese zwei Bereiche nicht, weil z.b. die Code-Struktur der geplanten Ausgabe dieses unmöglich macht, erscheint der o.g. Fehler "malformed document created, missing head area", heißt: der Filter findet das schließende </head> nicht.
Ursachen dafür sind vielfältig, die einfachste und verständlichste Variante wäre das Einlesen einer zweiten Datei, die ebenfall eine HTML-Seitenstruktur aufweist. Eine andere Möglichkeit wäre die Verwendung von Uralt-Modulen oder Uralt-Droplets. Früher war es nämlich üblich, Links z.b. zu CSS-Dateien direkt in die Ausgabe eines Moduls zu schreiben. Stammt aus Zeiten, wo es die Funktion register_frontend_c ss() noch nicht gab. Gilt dann analog für Droplets.
Und dann wäre eben noch die Validität der Ausgabe. Jeder kennt es, jeder hat es schon mal gesehen: hab ich einen Syntax-Fehler in meinem Template (und das schließt die Ausgabe einzelner Blöcke mit ein, erscheint mein Inhalt oder auch nur eine Fehlermeldung an völlig anderer Stelle, abhängig vom Abbruch mal ganz oben oder ganz unten, aber oft eben "out of content" und damit außerhalb von <head> oder von <body>. Gutes Beispiel sind deine Validierungen, die auf nicht geschlossene Div's in Folge des Scriptabbruches hinweisen.
Je nach Stelle hat man dann auch mal zwei <head>-Bereiche
Als "Profi" hab ich nun meine Methoden, nach solchen Stellen zu suchen, die haben aber auch das Risiko, die gesamte webseite zu zerschießen, wenn sie falsch angewandt werden. Haben aber auch den Vorteil, das die Ursache in kürzester Zeit gefunden werden kann, ich denk, ich bräuchte keine 5 min mit einer Live-Ansicht, um das Problem zu finden.
Als Laie würde ich jetzt die Newsbeiträge deaktivieren. Zuerst das gesamte NewsModul über die Zeitsteuerung deaktivieren (Eingabe eines Datums aus der Vergangenheit in der Sektion-Verwaltung dieser Seite. Dann probieren
(https://i.gyazo.com/b5f008e9d93fd57bbdbcb5d0e2e5a783.png)
Lt Code der index.php des Templates verwendest du eine Abfrage auf Content im Block2. Lt Quellcode der Fehlerseite wird solch Block2 auch genutzt. Diesen Inhalt mal dem Block1 zuweisen (gleiches Bild). Auch wieder probieren.
Wird in einem der beiden Test's der Rest des Content angezeigt, ist der Fehler eingekreist, entweder auf das News-Modul oder auf den Code des Block2
Ist nun das News-Modul der auslöser, kannst du nach und nach jeden News-Beitrag inaktiv schalten. Einer davon wird das Problem auslösen (denk ich)
-
Hallo Diemar,
vielen Dank für Deine Antwort.
Möchtest Du über PN einen Login zur Website, um Dir das anzusehen?
Viele Grüße
Sabo
Ich vermute dass ist überlesen worden, also sabo-!
eine PM an sternchen8875
und das Problem ist schnell erkannt und gebannt.
-
PM ist angekommen, Problem ist gesehen und erkannt - PHP-Version und Code passen nicht zusammen
einfachste Lösung wäre das Hochsetzen der PHP-Version auf PHP 8.1.x. Vielleicht kannst du das kurzfristig arrangieren.
P.S.: die neueste WB-Version 2.13.4 ist ein paar Stunden vor dem Release. Die läuft dann mit allen PHP 8.2er Versionen.
Wenn du mir die FTP-Zugangsdaten zukommen läßt, würde ich dieses Upgrade dann gleich mit erledigen, aber dann sollte es schon eine PHP 8.2.x sein