TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

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

isTrue

str / stdWrap

Wenn der Inhalt "wahr" ist,... (kein leerer String und nicht null)

isFalse

str / stdWrap

Wenn der Inhalt "falsch" ist,... (leer oder null)

isPositive

int / stdWrap + calc

Liefert falsch zurück, wenn der Inhalt nicht positiv ist.

isGreaterThan

value / stdWrap

Liefert falsch zurück, wenn der Inhalt nicht größer als ».value ist.

isLessThan

value / stdWrap

Liefert falsch zurück, wenn der Inhalt nicht kleiner als ».value ist.

equals

value / stdWrap

Liefert falsch zurück, wenn der Inhalt nicht ».value gleicht.

isInList

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

value / stdWrap

Der "Wert" (Der oben erwähnte Vergleichswert)

negate

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.

directReturn

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:

TYPOSCRIPT
.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:

TYPOSCRIPT
.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.

TYPOSCRIPT
...
  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
page.10.subparts.SUBNAV = HMENU
page.10.subparts.SUBNAV {
	entryLevel = 1
	wrap = <ul id="subNav"><li class="subNavHeader">Header</li> | </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	
}
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 icon_wink.gif
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!