====== if ======
Mit ''if'' ist es möglich, eine oder mehrere Bedingungen zu definieren, bevor das Ergebnis eines cObjects ausgegeben wird. Bei Erfüllung __aller__ Kriterien wird //true// zurückgegeben. Wenn nur eine Bedingung nicht erfüllt wird, führt dies mit der Meldung //false// zum Abbruch.
===== Eigenschaften =====
^Eigenschaft^Datentyp^Beschreibung^
^isNull|stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert der PHP-Wert //NULL// ist. Da dieser Wert nicht in TypoScript gesetzt werden kann (//NULL// würde als String angesehen), sind nur die stdWrap-Funktionen verfügbar.
10 = TEXT
10.value = Das Feld 'media' ist leer.
10.if.isNull.data = field:media
|
^isTrue|string /stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert nicht leer oder ''0'' ist.
10 = TEXT
10.value = Es existiert eine Datei im Feld 'media'.
10.if.isTrue.data = field:media
|
^isFalse|string /stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert leer oder ''0'' ist.
10 = TEXT
10.value = Das Feld 'media' ist leer.
10.if.isFalse.data = field:media
|
^isPositive|integer / stdWrap +calc|Bedingung ist erfüllt, wenn der abgefragte Wert eine Zahl ≥ 1 ist.
10 = TEXT
10.value = Der Wert ist positiv.
10.if.isPositive = -5 + 6
|
^isGreaterThan|value / stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert höher ist als der Wert unter ''if.value''.
10 = TEXT
10.value = Die Seiten-ID ist größer als 4.
10.if.isGreaterThan.data = GP:id
10.if.value = 4
|
^isLessThan|value / stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert niedriger ist als der Wert unter ''if.value''.
10 = TEXT
10.value = Die Seiten-ID ist kleiner als 4.
10.if.isLessThan.data = GP:id
10.if.value = 4
|
^equals|value / stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert mit dem Wert unter ''if.value'' übereinstimmt.
10 = TEXT
10.value = Die aktuelle Seite heißt 'Impressum'.
10.if.equals.field = title
10.if.value = Impressum
|
^isInList|value / stdWrap|Bedingung ist erfüllt, wenn der abgefragte Wert in der kommaseparierten Liste unter ''if.value'' enthalten ist.
10 = TEXT
10.value = Der Untertitel lautet 'Hund', 'Katze' oder 'Maus'.
10.if.isInList.data = field:subtitle
10.if.value = Hund,Katze,Maus
|
^value|value / stdWrap|Der hier angegebene Wert dient zum Vergleich mit den Daten, die mit ''isGreaterThan'', ''isLessThan'', ''equals'' oder ''isInList'' abgefragt wurden.|
^negate|boolean|Wenn aktiviert, wird das Ergebnis der Abfrage ins Gegenteil verkehrt.\\ __**if.negate = 1** bewirkt:__\\ ''if.isTrue'' -> false\\ ''if.isFalse'' -> true\\ ''if.isPositive'' -> ''0'' oder negativ\\ ''if.isGreaterThan'' -> kleiner oder gleich\\ ''if.isLessThan'' -> größer oder gleich\\ ''if.equals'' -> ungleich\\ ''if.isInList'' -> nicht enthalten\\ Bei mehreren Bedingungen gilt das Gesamtergebnis dieser Abfragen, also //true// oder //false//.|
^directReturn|boolean|Ist diese Eigenschaft vorhanden (egal welcher Wert), haben alle anderen Eigenschaften von ''if'' keine Wirksamkeit! Die Ausgabe wird nur noch durch den folgenden Wert bestimmt.\\ Mit dieser Eigenschaft kann man zum einen die Ausgabe simulieren; zum anderen könnte der Wert mithilfe einer Konstante gesetzt werden.|
===== Beispiele =====
==== Verknüpfung mehrerer Bedingungen ====
Der Wert //true// wird zurückgegeben, wenn alle Bedingungen erfüllt sind. Die Eigenschaft ''if.value'' kann nur einmal definiert werden und gilt somit für alle vergleichenden if-Eigenschaften.
10 = TEXT
10 {
value = Ausgabetext
if.isPositive = 1+3
if.equals = foo
if.value = foo
}
# Beide Vergleiche beziehen sich auf 'if.value':
20 = TEXT
20 {
value = Ausgabetext
if.isGreaterThan = 5
if.equals = 2
if.value = 2
}
==== Verknüpfung mehrerer Bedingungen und Umkehrung ====
Bei der Anwendung von ''negate'' mit mehreren Abfragen ist zu beachten, dass sich die Umkehrung auf das __Gesamtergebnis__ der Bedingungen bezieht.
10 = TEXT
10 {
value = Ausgabetext
if.isPositive = 1
if.equals = foo
if.value = bar
if.negate = 1
}