layout problem

Gesperrt
helpmeplease
Beiträge: 37
Registriert: Mi 26. Nov 2003, 19:45
Kontaktdaten:

layout problem

Beitrag von helpmeplease »

hallo,

ich kann seit kurzem die layouts nicht mehr im backend bearbeiten bzw. aufrufen; es kommt keine fehlermeldung, die textarea felder werden einfach nicht mehr angezeigt.

grund ist folgender php-code im head bereich des layouts:

Code: Alles auswählen

 $url = $_SERVER['REQUEST_URI'];
 $pauschalen = "";
 $parts_url = split("/", $url);
 $link1 = "";
 for($i=1; $i<count($parts_url)-1; $i++) $link1.="/".$parts_url[$i];
 //list($url_name, $url_idcat, $url_idart, $url_zeit, $url_bereich) = split("-", $parts_url[count($parts_url)-1]);
 global $url_name, $url_idcat, $url_idart, $url_zeit, $url_bereich;
 $sess->register("url_name");
 $sess->register("url_idcat");
 $sess->register("url_idart");
 $sess->register("url_zeit");
 $sess->register("url_bereich");
 $split = split("-", $parts_url[count($parts_url)-1]);
 if (count($split)==5) {
  if (isset($split[0])) $url_name    = $split[0];
  if (isset($split[1])) $url_idcat   = $split[1];
  if (isset($split[2])) $url_idart   = $split[2];
  if (isset($split[3])) $url_zeit    = $split[3];
  if (isset($split[4])) {
   $url_bereich_split = split("\.", $split[4]);
   if (isset($url_bereich_split[0])) $url_bereich = $url_bereich_split[0];
  } 
 }
 $link1.= "/".$url_name."-".$url_idcat."-".$url_idart."-";
 $link2 = "-".$url_bereich.".html";
auszug bzw. ist dieser teil für die fehlfunktion verwantworlich; d.h. kopier ich das ganze raus (per phpmyadmin) dann kann ich das layout bearbeiten . ist dieser bereich des codings drinnen kann ich die layouts nur noch über phpmyadmin bearbeiten ...

die front-end seite arbeitet problemlos und auch im coding kann ich keinen fehler finden. meine vermutung ist ein contenido-bug ...

vielleicht weiss jemand was dazu ...
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo »

prüfe ob der code extern läuft...d.h. keine parse-errors erzeugt

ggf errorlog.txt gegenchecken
helpmeplease
Beiträge: 37
Registriert: Mi 26. Nov 2003, 19:45
Kontaktdaten:

Beitrag von helpmeplease »

Der Code hat keine Parse Errors, aber selbst wenn er welche hätte müsste es auf jeden Fall möglich sein, den Code innerhalb von Contenido zu bearbeiten. Im Frontend kommt es auch zu keinen Problemen. Alles funktioniert wie gewollt.
Im Contenido Admin Bereich wird die Auswahl für die vorhandenen Layouts ganz normal angezeigt. Sobald aber dieses Layout mit dem unten geposteten Coding ausgewählt wird kommt es zu einem Abbruch (Die Seite kann nicht angezeigt werden). Daher gibt es auch keine Fehlermeldungen.
Im errorlog.txt File gibts auch keine Hinweise.

Es muss also zu einem Server Error beim Aufbau der Seite: "main.php?area=lay_edit&frame=4&idlay=5" kommen.
david
Beiträge: 7
Registriert: Mi 2. Apr 2003, 19:05
Kontaktdaten:

Beitrag von david »

Hallo,
gibt es zu diesem Problem eine Lösung?
Ich habe nämlich einen ähnlichen Fehler - Fehlermeldungen unter Administration - System sind keine vorhanden. Sobald ich im Layout einen php-Code hinzufüge, kann ich das Layout in Contenido nicht mehr bearbeiten, weil es nicht mehr angezeigt wird. Im Frontend funktioniert es allerdings problemlos.
lg
david
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone »

Das Problem hatte ich auch, als ich versucht habe, mit Flaggen für Sprachen im Layout zu arbeiten. Hatte den Code für die Flaggen hier aus dem Board.
Danach war nix mehr mit Layout editieren :(

Mit der 4.4 ging es, ab 4.5 nicht mehr...
Stefan_Br
Beiträge: 36
Registriert: Di 29. Nov 2005, 18:06
Kontaktdaten:

Beitrag von Stefan_Br »

Habe das gleiche Problem:

Bei bestimmtem php-Code im Layout lässt sich dieses nicht in der Editieransicht anzeigen; stattdessen bricht die Ausführung der Backend-Skripte ab.

Meinen Forschungen zu Folge ist die Zeile

Code: Alles auswählen

$resultingHTML = preg_replace('/<\?(php)?((.)|(\s))*?\?>/i', '', $html);


in der Funktion cleanHTML in der Datei class.htmlvalidator.php schuldig.

Warum genau habe ich nicht untersucht, weil es mir ohnehin nicht sonderlich sinnvoll vorkommt, einfach den php-Code zu entfernen, weil der ja anscheinend auch bei der Vorschau ausgeführt wird, für die ja die Validation letztlich ist. Außerdem kann dies ja leicht zu unberechtiogten Fehlermeldungen führen, weil es ja gut sein kann, dass das html erst durch die php-Ausgaben valide wird bzw. sonst ein Teil fehlt.

Deshalb habe ich folgende Korrektur vorgenommen, die bei mir das Problem gelöst hat:
Besagte Zeile habe ich durch Folgendes ersetzt:

Code: Alles auswählen

         ob_start(); 
         eval(" ?> ".$html." <?php "); 
         $resultingHTML = ob_get_contents(); 
         ob_end_clean(); 



Damit wird der php-Code einfach ausgeführt, bevor das Ganze validiert wird. Hier kann es natürlich auch passieren, dass mangels Parametern, die im eigentlichen da sind, ungültiges html herauskommt; es ist aber richtig, dass dies dann bemängelt wird, weil dies ja auch eine Vorschau behindern würde. Die Meldung könnte für den unbedarften Nutzer trotzdem verwirrend sein, ebenso wie die Zeilenangaben in den Fehlermeldungen, die nicht stimmen, sobald php-Code entfernt oder ausgeführt wird.

Außerdem bemängelt der Validator zumindest in 4.6.2 ein fehlendes öffnendes Tag nicht, solange ein schließendes vorhanden ist.
Gesperrt