Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 14. Mai 2019 07:46

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 28

Smarty debug funktioniert nicht

Eigentlich sind das 2 Probleme:

1. Smarty debug funktioniert nicht, zumindest nicht im Cataloger-Modul.
Wenn ich dort eine Zeile

reinschreibe, lande ich auf der Fehlerseite.

2. Auf der Fehlerseite wird die Quellzeile fehlerhaft angezeigt.
Da steht:

cmsms schrieb:

Error: at line 6 in file C:\xampp\htdocs\cmsms_2_2_10\lib\smarty\sysplugins\smarty_internal_templatecompilerbase.php:
Message: 
Syntax error in template "content:content:content_en"  on line 6 "_smarty_console.document.write("    \n    \n    \n

Wenn man die erste Zeile liest, vermutet man es gäbe einen Fehler auf Zeile 6 in der php-Datei, was eine Fehlinformation ist. Die dort angezeigte Zeilenzahl ist die Zeile, auf der mein {debug} steht + 2.

Gruß
Frank

Offline

#2 14. Mai 2019 08:13

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.256

Re: Smarty debug funktioniert nicht

Ist ein bekanntes Problem.
Wurde vor 12 Jahren schonmal im Smarty-Forum angesprochen:
https://www.smarty.net/forums/viewtopic … c256#46387
Scheint da bis heute keine bessere Lösung zu geben.

Offline

#3 14. Mai 2019 08:28

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 28

Re: Smarty debug funktioniert nicht

Nun dort geht es um fehlerhafte Templates, aber mein Template ist ja nicht fehlerhaft, zumindest wird es ja klaglos ausgeführt. Es sei denn, ich füge die Zeile "{debug}" ein, aber die kann ja schlecht einen Fehler enthalten.

Offline

#4 14. Mai 2019 08:54

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.256

Re: Smarty debug funktioniert nicht

Ja, aber dort wird auch gesagt, dass die Ausgabe, wie Du sie erhältst, normal ist.
Also dass zwar templatecompilerbase.php bemängelt wird, obwohl das Template gemeint ist, und dass die Zeilenzahl nur ungefähr der Zeile im Template entspricht.

Warum allein {debug} zu einem Fehler führt, kann ich nicht sagen.
Hast Du es evtl. via Copy & Paste im WYSIWYG-Editor eingefügt?
Kann es sein, dass da noch mehr mitkopiert wurde?
(Mal im HTML-Code im Editor nachschauen)

Offline

#5 14. Mai 2019 09:55

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 28

Re: Smarty debug funktioniert nicht

Ich weiß jetzt, warum der Fehler bei debug auftritt.
Smarty stolpert über sein eigenes Template "debug.tpl"
Dort gibt es css-Anweisungen, die korrekt mit {literal} umgeben sind.
Der Parser müsste sie eigentlich ignorieren, macht er aber im debug-Modus nicht.
Er stoplert dann in Zeile 9 der tpl-Datei über "font-family: "
Das generiert dann in der Datei lib\smarty\sysplugins\smarty_internal_compilebase.php in Zeile 90 den template_error
'too many shorthands'

Kann man überprüfen, indem man vor Zeile 90 in smarty_internal_compilebase.php folgenden Code einbaut:

[== php ==]
 $fhandle = fopen("c:\\xampp\\htdocs\\cmsmsparse.txt", 'a');                     
fwrite($fhandle, "$key - $mixed ########### too many shorthands #########\r\n");                     
fclose($fhandle);

Und wenn man anschließend in debug.tpl Zeile 9 und 10 vertauscht, ändert sich auch die Debug-Ausgabe entsprechend.

Nachtrag:
Der Fehler tritt nur mit dem Category-Modul auf.
Selbst wenn ich dort ein leeres Template anlege und nur die eine Zeile
{debug}
reinschreibe passiert es.
Es muss also irgendwo im Modul-Quelltext was falsch sein.

Beitrag geändert von philfr (14. Mai 2019 13:16)

Offline

#6 14. Mai 2019 13:31

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 28

Re: Smarty debug funktioniert nicht

Wenn ich diesen Code im Cataloger-Modul verwende, bekomme ich ohne Fehler die Debug-Konsole angezeigt?!?
In anderen Modulen wird erwartungsgemäß der Text
  {debug}
ausgegeben.

Offline

#7 14. Mai 2019 15:06

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.256

Re: Smarty debug funktioniert nicht

Scheint so als wird das Template doppelt kompiliert.
Beim ersten mal wird aus {debug} -> unter anderem ein Javascript.
Daher beim zweiten mal der Fehler

Syntax error in template "content:content:content_en"  on line 6 "_smarty_console.document.write("    \n    \n    \n

Wenn das in {literal} Tags steht, bleibt es beim ersten mal bei {debug}.
Und beim zweiten Durchlauf wird daraus die {debug}-Konsole.

Hab noch nicht herausgefunden wo genau im Modul das passiert, und warum.

Offline

#8 15. Mai 2019 08:54

philfr
probiert CMS/ms aus
Registriert: 08. Mai 2019
Beiträge: 28

Re: Smarty debug funktioniert nicht

Ja wenn man die debug-Ausgaben der Module vergleicht, dann gibt es nur bei dem Cataloger als Origin: "Smarty object"

Vielleicht wird das Template doppelt kompiliert, weil das Smarty-object intern benutzt wird?

So ganz regelkonform ist der Cataloger ja eh nicht, statt unter Erweiterungen muss man ihn unter Inhalt verwalten, das ist für mich das Gegenteil von "made simple"

Offline