Generierungs-Log: Warning "Replacing null value with empty default!" Erweiterung um Variablennamen oder Template ID und Line Nr.

Bei der Auswertung der Generierungslogs findet man immer mal wieder folgende Warnung:

"Replacing null value with empty default!"

Es wäre hilfreich, wenn in dem Log weitere Informationen geloggt würden wie z.B. der Variablennamen oder die Template ID inkl. Line Nr. Das macht die Fehlersuche und die Korrektur sehr viel leichter.

11 Comments
pjodeleit
e-Spirit employee

Wenn man $CMS_SET(#global.debugMode, true)$ setzt, bekommt man genau das. Kann z.B. in der Projekteinstellungsseite gemacht werden.

hoebbel
e-Spirit employee

Hier sollte aber berücksichtigt werden, dass durch die Aktivierung des Debug Modus zusätzliche Warnungen erzeugt werden können. Gedacht ist dieser Modus nur für die Template-Entwicklung, nicht für den produktiven Betrieb.

alexanderan
I'm new here

Das mit dem Debug-Mode ist sicherlich eine hilfreiche Maßnahme beim Entwickeln von Templates.

Allerdings finde ich eine Warnung, ohne jegliche Hinweise auf die Codezeile und das Template nicht für allzu sinnvoll. Hier würde ich der Vorrednerin zustimmen: Entweder man gibt die Warnung nicht aus, oder man reichere sie mit nützlichen Informationen und Hinweisen zur Fehlersuche an.

PS: Den Status "ALREADY OFFERED" würde ich hierfür nicht gelten lassen 🙂

hoebbel
e-Spirit employee


Hier muss man aber berücksichtigen, dass es um das Generierungslog geht. Wenn ich mich nicht sehr irre, müssten die entsprechenden Informationen ohne Aktivierung des Debug Modus bereits in der Vorschau angezeigt werden.

Im Generierungslog findet sich über dem entsprechenden Fehler der Hinweis, welche Seite zur Zeit generiert wird. Eine Vorschau der entsprechenden Seite zeigt dann die gewünschten Informationen an.

Wenn der Stacktrace der Fehlermeldung standardmäßig ausgegeben würde, würden die Logfiles stark anwachsen, was so nicht unbedingt von allen Kunden gewünscht ist.

Anmerkung: Der Fehler bedeutet, dass im Template vergessen wurde eine Variable auf Inhalt zu prüfen, die offensichtlich nicht zwingend gefüllt sein muss.

Wenn also anstelle von $CMS_VALUE(myVar)$ $CMS_VALUE(if(!myVar.isEmpty,myVar,""))$ verwendet würde, käme es nicht zu dem Fehler.

pjodeleit
e-Spirit employee

Oder noch einfacher $CMS_VALUE(..., default:"")$

C_Klingbeil
I'm new here

Hallo Herr Höbbel,

die Informationen über die Vorschau zu bekommen, war mein erster Versuch, der aber scheiterte, da keine Fehler gemeldet werden...

Vielen Dank für Ihre Aufklärung, woher die Warning kommt 😉 Da man als Template-Entwickler ja nun nicht ganz alleine auf der Welt ist und bei großen Projekten mit vielen Templates auch einmal eine Abfrage untergehen kann, muss man sich unweigerlich mit dieser Warning auseinandersetzen. Des Weiteren besteht eine Seite normalerweise aus mehreren eingefügten, includierten, gerenderten etc. Templates, Linkvorlagen, Formatvorlagen... Da wäre es hilfreich, wenn nicht nur die Tatsache, dass ein Null value ersetzt wird sondern auch wo dieser ersetzt wird, geloggt würde. Damit das Generierungslog nicht noch weiter wächst, können Sie von mir aus gerne die letzten drei Worte der Meldung weglassen und dafür die ID des Templates ausgeben 🙂

Übrigens tritt diese Meldung auch auf, wenn ein globaler Inhalt includiert wird, der noch nie freigegeben war...

Viele Grüße,

C. Klingbeil

hoebbel
e-Spirit employee

Hallo Frau Klingbeil,

meine Antwort soltle nicht wertend sein, sondern nur Informationen vermitteln.

Wobei mich wundert, dass die Vorschau der entsprechenden Seite keinen Fehler erzeugt. Haben Sie denn auch die Fehler der Vorschau im Freigabestand geprüft?

Das ein globaler Inhalt, der inkludiert wird, aber niemals freigegeben war, zu dem Fehler führt, ist korrekt, da es sich hierbei ebenfalls um eine nicht gefüllte (bzw, nicht gesetzte) Variable handelt. Der Fehler kann ebenfalls wie oben beschrieben abgefangen werden, sofern dies gewünscht ist.

Viele Grüsse aus Dortmund,

  Holger Höbbel

C_Klingbeil
I'm new here

Danke 🙂

pjodeleit
e-Spirit employee

Noch eine Anmerkung:

Aus dem Generierungslog bekommt man ja die Information, auf welcher (Struktur-)Seite der Fehler aufgetreten ist.

Wenn man jetzt einen Auftrag erstellt, der nur einzelne Seiten generiert (ohne Deployment), und dort die Generierung mit Debug-Informationen läuft (z.B. über eine Variable, die in den Projekteinstellungen ausgewertet wird), sollte man als Template-Entwickler anhand dieses Logs den Fehler schnell identifizieren können.

Der Auftrag kann noch so konfiguriert werden, das der normale Redakteuer ihn nicht sieht.

MarcusDau
New Responder

Wie sieht es hier mit dem Stand aus? Die Anregungen / Kommentare sind über 5,5 Jahre alt, die Idee ist aber weiterhin super.

Klar kann man über den debug-Mode nachträglich gehen und nochmal eine Generierung laufen lassen, aber das ist alles zusätzlicher Zeitaufwand. Warum das Leben der Entwickler verkomplizieren. Der Einbau dieses Features kostet e-Spirit sicherlich nicht sehr großen Aufwand und viele Kunden wünschen sich das.