[TYPO3-german] 2 Verständigungsfragen zu cObject und stdWrap

Jo Hasenau info at cybercraft.de
Tue Jun 23 18:36:49 CEST 2015


Am 17.06.2015 um 15:39 schrieb Alexander Averbukh:
> Hallo Chris,
>
> ja, jetzt verstehe ich. und ich kann in deinem Beispiel statt den
> Feldnamen zu schreiben,  auch weiteres Typosript schreiben, wo
> entschieden wird, welches Feld benutzt werden soll. So eine Art
> Dynamisierung.

Exakt - wir haben das seinerzeit in TYPO3 4.5 eingebaut und als "Chained 
TypoScript" bezeichnet. Im Prinzip funktioniert das ähnlich wie jQuery - 
nur rückwärts.
Du also kannst eine Reihe von stdWrap-Funktionen verwenden, die sich 
gegenseitig beeinflussen, wobei das Ergebnis immer von rechts nach links 
weitergereicht wird.

Beispiel

10.stdWrap.dataWrap = blah|{register:something}blah
10.stdWrap.dataWrap.override = blubb|{register:somethingElse}blubb
10.stdWrap.dataWrap.override.fielRequired = anotherField

Übersetzt bedeutet das: Wenn das Feld anotherField irgendeinen Wert hat, 
wird statt des ursprünglichen dataWrap-Wertes der aus override verwendet.

Es lassen sich im Grunde alle Methoden so miteinander verbinden, wobei 
da nicht immer ein sinnvolles Konstrukt rauskommt. Manchmal ist aber 
eine smarte Kombination von verknüpften Methoden effizienter als ein 
größeres Konstrukt aus vollständigen Objekten.

cObject wirst Du vermutlich auch nur mit entsprechenden Abfragen oder 
als Lieferant bestimmter Eigenschaften nutzen.

Für obiges Beispiel könnte man z.B. nicht nur irgendeinen sonder konkret 
die Werte 2 und 3 für another Field abfragen:

10.stdWrap.dataWrap.override.if.isTrue.cObject = CASE
10.stdWrap.dataWrap.override.if.isTrue.cObject {
   key.field anotherField
   default = TEXT
   default.value = 0
   2 = TEXT
   2.value = 1
   3 = TEXT
   3.value = 1
}

Genausogut könnte man das aber auch über eine Liste abfragen:

10.stdWrap.dataWrap.override.if.isInList.field = anotherField
10.stdWrap.dataWrap.override.if.isInList.value = 2,3

Letzteres wäre in dem Fall die performantere und deswegen 
empfehlenswertere Lösung.

Bevor Du also ein vollständiges cObject hochfeuerst, solltest Du immer 
überprüfen, ob das Ganze nicht schlanker zu lösen ist.

Viel Spaß beim Experimentieren!

Joey

-- 
Diversity:
Die Kunst zusammen unabhängig zu denken
The art of thinking independently together.
--
Facebook: https://www.facebook.com/johasenau
Twitter: http://twitter.com/bunnyfield
Xing: http://contact.cybercraft.de
TYPO3 cookbook (2nd edition): http://www.typo3experts.com


More information about the TYPO3-german mailing list