

Ich habe eine ganze Weile gebraucht und auch ziemlich geflucht da die if conditions in Typoscript ziemlich undurchsichtig sind.
Nachdem ich jetzt endlich durchgestiegen bin, moechte ich hier ein kleines Tutorial schreiben, wie man beliebig viele UND, ODER und Kombinationen dieser Operatoren mit Typoscript realisiert.
Zunaechst die Oder verknuepfung in Beispiel 1
negate wirkt erst nach der Auswertung von bed1 und bed2 mit anschliessender UND Verknuepfung. Dadurch wird if nur dann false, wenn bed1 und bed2 false sind.
Ich weiss, das ist durchs knie ins Auge, aber wie gesagt, ich habe ziemlich geflucht, bis ich das gerafft hatte...
Jetzt die Verkettung mehrerer Bedingungen in Beispiel 2:
Die IsTrue und IsFalse Anweisungen (und eineige andere sie TSref) koennen wieder stWrap enthalten. d.h. man kan innerhalb einer isTrue Anweisung wieder ein if setzen und so beliebige Kombinationen an Operatoren verwirklichen (Wenn man hinterher noch den Knoten aus dem Hirn bekommt ;-)
Ich glaube, so kann man wirklich alle operatorkombinationen realisieren...
# beispiel 1 #durch negate kann man meherere Bedingungen mit ODER verknuepfen: # zeige das cObjekt an (if = true) , wenn bedingung1 oder bedingung2: if { value=1 isLessThan = bedingung1 isFalse = bedingung2 negate = 1 } #Beispiel 2 #Benutze verschachtelte if anweisungen: # bed1 UND NICHT (bed2 UND bed3) if { isTrue = bed1 #sorgt dafuer das isFalse zunaechst immer false zurueck gibt. isFalse = 1 # wenn diese if bedingung erfuellt ist, wird die 1 aus isFalse geloescht und isFalse gibt true zurueck. isFalse.if { value = 1 isLessThan = bed2 isFalse = bed3 } } # bed1 UND (bed2 ODER bed3) if { isTrue = bed1 isPositive = 1 #benutze Beispiel 1 fuer die ODER verknuepfung isPositive.if { value=1 isLessThan = bed2 isFalse = bed3 negate = 1 } }
Dieses Snippet wurde von Till eingesendet.




Habe eben nach so einem workaround gesucht, funktioniert perfekt!
Danke!
Hat mir sehr geholfen!
das ich dank Till's hilfe schnell erstellen konnte!
Folgendes hab ich in meinen content Bereich meines Templavoila Templates reingeschrieben (Typoscript-Code), um zu prüfen ob der User in der korrekten Gruppe ist und der übergabe-parameter vorhanden ist. Falls dies zutrifft, wird die rechte spalte (also dieser Content Bereich nicht angezeigt). Das Beispiel beinhaltet auch noch das kb_kbtvcontslide plugin um Inhalte von übergeordneten Seiten zu lesen.
10 = RECORDS
10.source.postUserFunc = tx_kbtvcontslide_pi1->main
10.source.postUserFunc.overridePage = 0
10.source.postUserFunc.collect = 4
10.source.postUserFunc.reverse = 1
10.source.postUserFunc.field = content_right
# 10.source.current=1
# 10.dontCheckPid = 1
10.tables = tt_content
10.source.if {
value.data = TSFE:fe_user|user|usergroup
equals = 31
isTrue = 1
isTrue.if {
value.data = GPvar:mag|vm
equals = full
negate = 1
}
}
Grüße Tobi
Dein TypoScript Code liefert nur in einem Fall "false" zurück, und zwar wenn "isLessThan" und "isFalse" jeweils "true" sind. Wenn "isLessThan" allerdings "true" ist, sollte die Bedingung doch zutreffen!
Ein funktionierendes Beispiel für eine ODER-Verknüpfung habe ich leider nicht.
Add comment