Templates, Probleme

Aus eZ Wiki

Wechseln zu: Navigation, Suche

Der Template-Parser ist immer wieder für Überraschungen gut. Hier eine Sammlung diverser Nickeligkeiten die schon die eine oder andere Stunde Lebenszeit vergeudet haben.

* Whitespace bei Funktionen, z.B. hash ('a', 'b') ist falsch.
* Berechnungen mit üblichen Operatoren sind nicht möglich. Also sub() und sum() statt - oder + verwenden.
* Einige Funktionen erlauben sowohl piping als auch Parameterübergabe in Klammern, andere nicht. Das scheint in manchen Fällen inkonsequent zu sein. Zum Beispiel count_chars().
* Die Fehlertoleranz der Templatesprache ist eher Plage als Nutzen. Da kann es bei fehlenden Klammern zu seltsamem Verhalten kommen.
* Quotes hash(), Bei der Definition von hash() kann man nur eingeschränkt Quotes verwenden, da das escapen hier nicht richtig funktioniert.

Inhaltsverzeichnis

CHARSET Angabe in Templates

Eine Charset-Angabe muss zwingend als erste Zeile gemacht werden. Steht z.B. auch nur ein Kommentar in der ersten Zeile funktioniert es nicht.

{*?template charset=utf-8?*}

Variablen müssen definiert sein

 template.tpl
 [...]
 {def $a='AINIT'}
 {set $a='Apfel'}
 {set $b='Banane'}

 <h4>a = {$a}</h4>
 <h4>b = {$b}</h4>
 [...]

 Browser
 [...]
 a = Apfel
 b = 
 [...]

Klammern

Ein Ausdruck wie

{if (MyExpression)}wahr{/if}

funktioniert nicht! Klammern können nicht neutral eingesetzt werden. Es muss also

{if MyExpression}wahr{/if}

der Ausdruck ohne Klammern formuliert werden.


Klammern2

Bei geschweiften Klammern ohne Inhalt bricht der Template-Parser stillschweigend ab.

{}


attribute_filter

Der "like"-Filter muss in Kleinschreibung definiert werden. Angenommen der "title" ist "Beispiel 1", so findet dieser Filter nichts:

$attribute_filter = array( array( 'article/title', 'like', 'Beispiel*' ))

Dieser hier aber schon

$time_filter = array( array( 'article/title', 'like', 'beispiel*' ))
http://ez.no