PHP-TAL
Für die Entwicklung von Vorlagen kommt eine Kombination aus PHP-TAL und Ersetzungsvariablen zum Einsatz.
Was PHP-TAL ist und wie es verwendet wird entnehmen Sie bitte der offiziellen TAL-Dokumentation: https://phptal.org/manuals.html
Machen Sie sich vor allem mit folgendem Kapiteln vertraut:
- Attributrangfolge
- tal:define
- tal:condition
- tal:repeat
- tal:omit-tag
- tal:replace
- tal:content
- tal:attributes
- string:
- not:
- exists:
- structure
- Ausdrucksketten
Grundsätzliches
erst prüfen dann verwenden
Beim Arbeiten mit Feldern, egal ob aus dem Profil oder Artikeln, ist es wichtig zu berücksichtigen, dass dieses Feld vielleicht leer ist oder gar nicht existiert.
Es gibt verschiedene Wege das zu tun:
- "has"-Funktionen
Die TAL-API bietet eine Reihe von Funktionen, die prüfen ob ein Wert gesetzt ist.
<div tal:condition="THIS/hasSlots/0">{$SLOT_0}</div>
<div tal:condition="THIS/hasAttribute/HEADLINE" tal:content="THIS/getAttributeByName/HEADLINE"> </div>
- exists:
Der TAL-Modifier "exists:" prüft ob der angegebenen Pfad existiert aber nicht ob der Wert leer ist.
<div tal:condition="exists: THIS/getCurrentUser/getValues/ANMERKUNG" tal:content="THIS/getCurrentUser/getValues/ANMERKUNG"> </div>
- equals:
Der TAL-Modifier "equals:" kann auch genutzt werden um zu prüfen ob ein Wert leer ist, indem man den Vergleichs-String leer lässt. Das bietet sich im Besonderen bei Profilen/Pool-Feldern an.
<div tal:condition="not:equals:string:${THIS/getCurrentUser/getValues/FIRSTNAME}/">Hallo ${THIS/getCurrentUser/getValues/FIRSTNAME}</div>
- Ausdrucksketten:
Mit "|" können in TAL Ausdrucksketten gebildet werde. Dabei werden verschieden Ausdrücke von vorne nach Hinten ausgewertet und das erste was nicht NULL und keinen Fehler liefert wird verwendet. Damit kann sehr einfach ein Fallback für einen Wert erstellt werden.
<h1 tal:content="THIS/getAttributeByName/HEADLINE|string:Bitte Überschrift füllen"> </h1>
Kurzschreibweisen vermeiden
Für einige Artikel-Attribute stehen Kurzschreibweisen zur Verfügung. Diese Funktionen greifen nicht direkt auf ein Feld, sondern auf ein Feld mit einer bestimmten Rolle zu:
<h1 tal:content="THIS/getHeadline"> </h1>
In diesem Beispiel wird ein Feld des Artikels mit der Rolle "Überschrift" ausgegeben. Das muss nicht das Feld "Headline" sein. Außerdem kann die Rollen-Zuordnung nachträglich geändert werden, wodurch in den Vorlagen auch ein anderes Feld ausgegeben wird.
Besser ist getAttributeByName:
<h1 tal:content="THIS/getAttributeByName/HEADLINE"> </h1>
Auch für den Zugriff auf die Slots eines eMailings oder einer LeadPage stehen Kurzschreibweisen zur Verfügung. Diese haben zwar keine Abhängigkeiten zu einem Rollen-Modell, unterstützen aber dafür nur die ersten 10 Slots.
<div tal:condition="THIS/hasSlot9">{$SLOT_9}</div>
Besser ist:
<div tal:condition="THIS/hasSlots/10">{$SLOT_10}</div>
Dummy-User prüfen
Will man auf Profil-Attribute beziehungsweise Pool-Felder des aktuellen Profils zugreifen, sollte man den Fall berücksichtigen, dass es kein identifiziertes Profil gibt. Das ist zum Beispiel in der Vorschau oder dem visuellen Editor der Fall. In diesen Fällen liefert getCurrentUser das Profil des Dummy-Users.
Für diesen User sind nur einige Standard-Attribute gesetzt. Individuelle Pool-Felder können nicht angesprochen werden.
Um zu prüfen ob das aktuelle Profil der Dummy-User ist verwenden Sie isDummy.
<span tal:omit-tag="true" tal:condition="not:THIS/getCurrentUser/isDummy">{$INDIVIDUAL_SALUTATION}</span>
<span tal:omit-tag="true" tal:condition="THIS/getCurrentUser/isDummy">Sehr geehrte Damen und Herren</span>