if
Diese Funktion liefert wahr zurück, wenn ALLE angegebenen Bedingungen erfüllt sind. Wenn eine einzige Bedingung falsch ist, wird als Wert auch falsch zurückgeliefert.
Der zurückgelieferte Wert kann durch die ».negate-Eigenschaft negiert werden.
Eigenschaft | Datentyp | Beschreibung | Standard |
str / stdWrap | Wenn der Inhalt "wahr" ist,... (kein leerer String und nicht null) | ||
str / stdWrap | Wenn der Inhalt "falsch" ist,... (leer oder null) | ||
int / stdWrap + calc | Liefert falsch zurück, wenn der Inhalt nicht positiv ist. | ||
value / stdWrap | Liefert falsch zurück, wenn der Inhalt nicht größer als ».value ist. | ||
value / stdWrap | Liefert falsch zurück, wenn der Inhalt nicht kleiner als ».value ist. | ||
value / stdWrap | Liefert falsch zurück, wenn der Inhalt nicht ».value gleicht. | ||
value / stdWrap | Liefert falsch zurück, wenn der Inhalt nicht in der kommaseparierten Liste ».value zu finden ist. Die Liste in ».value darf keine Leerzeichen zwischen den Elementen haben! | ||
value / stdWrap | Der "Wert" (Der oben erwähnte Vergleichswert) | ||
boolean | Dies negiert das Ergebnis der Funktion direkt vor der Rückgabe. Wenn die Funktion bis dahin also wahr zurückgeliefert hätte, liefert sie schließlich falsch zurück. | ||
boolean | Wenn diese Eigenschaft gesetzt ist, wird automatisch der Wahr/Falsch-Wert dieser Eigenschaft zurückgeliefert. Könnte benutzt werden, um wahr/falsch mit TypoScript-Konstanten zu setzen. |
Erläuterung
Die if-Funktion ist eine recht außergewöhnliche Methode, wahr oder falsch zurückzuliefern. Vorsicht beim Gebrauch.
if wird normalerweise benutzt, um zu entscheiden, ob ein Objekt gerendert oder ein Wert zurückgegeben werden soll (siehe die Inhaltsobjekte und »stdWrap)
So funktioniert diese Funktion:
Die Funktion liefert wahr oder falsch zurück. Ob sie nun wahr oder falsch zurückliefert, hängt von ihren Eigenschaften ab. Sagen wir also, Sie setzen isTrue=1, dann ist das Ergebnis wahr. Wenn Sie isTrue.field=header setzen, liefert die Funktion wahr zurück, wenn das Feld header in $cObj->data gesetzt ist.
Wenn Sie Werte vergleichen wollen, müssen Sie einen Ausgangswert in die ».value-Eigenschaft laden. Beispiel:
.value=10 .isGreaterThan=11
Dies würde wahr zurückliefern, da der Wert von .isGreaterThan größer ist als der zugrundeliegende Wert von 10.
Ein komplexeres Beispiel ist dieses hier:
.value=10 .isGreaterThan=11 .isTrue.field=header .negate=1
Hier gibt es zwei Bedingungen: isGreaterThan und isTrue. Wenn beide wahr sind, ist das Gesamtergebnis auch wahr, ABER (!) die Rückgabe der Funktion ist falsch, da die ».negate-Eigenschaft das Ergebnis umkehrt.
Beispiel
Hierbei handelt es sich um ein GIFBUILDER-Objekt, welches NEU! auf einem Menüelement ausgibt, wenn das Feld newUntil einen Wert hat, der geringer ist als das aktuelle Datum.
... 30 = TEXT 30.value = NEU! 30.offset = 10,10 30.if { value.data = date: U isLessThan.field = newUtil negate = 1 } ...
Kommentare von registrierten Benutzern:
| Autor | Nachricht |
|---|---|
|
Verfasst am: Donnerstag, 11-06-09 22:15
|
|
|
daniel
Dabei seit: 01. 01. 2002
Beiträge: 0
|
Anscheinend functionieren isGreaterThan und isLessThan auch mit Strings. In diesem Fall wird das erste Zeichen genommen und der ASCII-Wert ermittelt. und als Vergleichswert hergenommen. Sehr praktisch! |
|
Verfasst am: Donnerstag, 25-12-08 17:45
|
|
|
McGregor
Dabei seit: 05. 11. 2004
Beiträge: 583
|
Hi! Ich möchte auch meinen Senf dazugeben. Bei dem Beispiel mit dem TEXT-Objekt handelt es sich meiner Meinung nach um ein Text innerhalb eines GIFBUILDER-Objekts, da hier der offset-Wert verwendet wird. Daher ist der (scheinbar ursprüngliche) Text 30 = TEXT 30.text = NEU! korrekt. Beim GIFBUILDER ist das nämlich anders. |
|
Verfasst am: Freitag, 05-12-08 13:20
|
|
|
zabinetta
Dabei seit: 24. 07. 2003
Beiträge: 82
|
nachdem ich jetzt zwei stunden rumprobiert habe: wenn ich ein objekt rendern lassen will in Abhängigkeit von irgendwelchen TSFE-Sachen, oder anderen objekten: stdwrap nicht vergessen. funktionierendes Beispiel: TYPOSCRIPT page.10.marks.CONTENT.25 = RECORDS page.10.marks.CONTENT.25 { source = 4410 dontCheckPid = 1 tables = tt_content stdWrap.if.isTrue.cObject = TEXT stdWrap.if.isTrue.cObject.data=TSFE:page|keywords } gut zu wissen, was? |
|
Verfasst am: Dienstag, 08-07-08 14:27
|
|
|
Sommer
Dabei seit: 17. 07. 2009
Beiträge: 1
|
Falls es jemanden mit ähnlichen Problemen interessiert, ich habs folgendermaßen gelöst: Diese Zeile TYPOSCRIPT wrap = <ul id="subNav"><li class="subNavHeader">Header</li> Kommt in die linke Spalte der Seite, über das Menü, in einem neuen subpart. Dannach im Typoscript entfernen. TYPOSCRIPT page.10.subparts.SUBNAV = HMENU page.10.subparts.SUBNAV { entryLevel = 1 wrap = |</ul> 1 = TMENU 1.NO.allWrap = <li> | </li> 1.NO.ATagBeforeWrap = 1 1.ACT = 1 1.ACT.allWrap = <li class="active"> | </li> 1.ACT.ATagBeforeWrap = 1 } und dem subpart den content zuweisen TYPOSCRIPT page.10.subparts.SUBNAV_HEADER < styles.content.getLeft |
|
Verfasst am: Dienstag, 08-07-08 09:52
|
|
|
Sommer
Dabei seit: 17. 07. 2009
Beiträge: 1
|
Hallo, Ich habe auf meiner Seite 2 Menüs, ein horizontales und ein vertikales. Das Vertikale beginnt bei entrylevel = 1, was ja soweit kein Problem ist. Mein Problem allerdings ist das diese Zeile TYPOSCRIPT wrap = <ul id="subNav"><li class="subNavHeader">Header</li> | </ul> auf jeder Seite angezeigt wird. Kann ich das per "if" abstellen das er es mir nur bei entylevel = 1 anzeigt und nicht bei = 0,2,3,...? Hier das vertikale Menü: TYPOSCRIPT
|
|
Verfasst am: Dienstag, 01-04-08 17:04
|
|
|
BastianBalthasarBux
Dabei seit: 04. 12. 2003
Beiträge: 559
|
es muss heissen: TYPOSCRIPT 30 = TEXT 30.value = Irgendein String Es ginge aber auch zum Beispiel: TYPOSCRIPT 30 = TEXT 30.value = <h1>Meine Überschrift</h1> oder: TYPOSCRIPT 30 = TEXT 30.data = TSFE:page|title --> Einfach mal bei der Syntax für TEXT nachschauen |
|
Verfasst am: Freitag, 21-07-06 10:21
|
|
|
Sambale
Dabei seit: 03. 04. 2006
Beiträge: 113
|
Nee Leute, das stimmt so nicht: TYPOSCRIPT 30 = TEXT 30.text= NEU! ist richtig, ausserdem muss es heissen: newUntil statt newUtil |
|
Verfasst am: Freitag, 21-04-06 14:19
|
|
|
Martin Helmich
Dabei seit: 06. 02. 2006
Beiträge: 458
|
Stimmt. Danke für den Hinweis. |
|
Verfasst am: Donnerstag, 13-04-06 23:01
|
|
|
Oliver Tan
Dabei seit: 04. 05. 2005
Beiträge: 63
|
Im Beispiel steht: 30 = TEXT 30.text= NEU! Muss es nicht so aussehen!? 30 = TEXT 30.value = NEU! |



