In diesem kleinen Blogbeitrag möchte ich if und CASE von Typoscript kurz mit jeweils einem konkreten Beispiel erklären. So wird die TYPO3 Installation vielleicht noch ein wenig dynamischer …
1. if:
Ein Objekt bekommt einen wrap zugewiesen. In unserem Beispiel will ich den Untertitel (subtitle) einer Seite direkt an einem Marker ausgeben. Mit einem wrap sorge ich dafür dass der Subtitle fett dargestellt wird:
lib.object = TEXT lib.object.field = subtitle lib.object.wrap = <b>|</b> page.10.marks.SUBTITLE < lib.object |
Dummerweise wird dieser wrap aber immer ausgeführt, egal ob ein Untertitel vergeben wurde oder nicht. Mit Hilfe von if.isTrue ist das ganz leicht zu ändern:
lib.object = TEXT lib.object.field = subtitle lib.object.if.isTrue.field = subtitle lib.object.wrap = <b>|</b> page.10.marks.SUBTITLE < lib.object |
Tipp 1: Wenn gleich mehrere Objekte dann nicht ausgegeben werden sollen, falls ein Objekt keinen Inhalt hat, kann man alle Objekte in einem Content Object Array fassen und if.isTrue auf das komplette COA anwenden
Tipp 2: Mit if.isFalse ist das ganze natürlich auch umgekehrt möglich
2. CASE:
Auch mit CASE lässt sich so etwas ähnliches wie eine kleine IF Abfrage erstellen. Ich kann je nach dem Wert eines Objektes eine andere Ausgabe zurückgeben. In meinem Fall wird das Feld subtitle missbraucht um einen konstanten Wert auf einer Seite auszugeben. Ich möchte also, dass wenn subtitle den Wert „1“ beinhaltet den Wert „Willkommen“ und wenn subtitle den Wert „2“ beinhaltet den Wert „Tschüss“ ausgeben (sorry, mir ist kein dooferes Beispiel eingefallen):
lib.object = CASE lib.object.key.field = subtitle lib.object.default = TEXT lib.default.value = Willkommen lib.object.2 = TEXT lib.object.2.value = Tschüss lib.object.3 = TEXT lib.object.3.value = Schön war es |
Tipp 1: Ein wrap ist bei einem CASE Objekt nicht direkt möglich. Um diesen dennoch zu machen, kann man zuerst ein COA erstellen und diesen wrappen, während dann der Inhalt des COA (z.B. 10) die eigentlich CASE Anweisung enthält
Tipp 2: Eine konkrete Anwendung kann sich auf Powermail beziehen, wenn man auf der Antwortseite eine spezifische Anrede benötigt (Sehr geehrte Frau Müller / Sehr geehrter Herr Müller) [link]
Grüße, Alex