====== 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 }