[TYPO3-german] CONTENT-Object - Datensatze müssen unterschiedlich gewrappt werden
JCL - Johannes C. Laxander
jc at laxander.com
Sat May 5 18:48:53 CEST 2012
Hallo Ralf-René,
>
> TIPP:
> wie wäre es aber mit einem Registerzähler im CONTENT
> (beginnend mit 0) alle elemente floaten lassen, und dann die
> auswertung mit IF modulo 4 rest 0 immer ein clear:both
> reinbringen http://www.wiki-cms.com/TypoScript-Rechnen
>
Dein Tipp hat mir "die Erleuchtung" gebracht - Danke! :-)
Hier noch einmal die Aufgabenstellung für TypoScript:
Gegeben ist ein CONTENT-Object, das mehrere Datensätze liefert, und die Ausgabe soll folgendermaßen aussehen:
| Z1-DS1 | Z1-DS2 | Z1-DS3 | Z1-DS4 |
| Z2-DS5 | Z2-DS6 | Z2-DS7 | Z2-DS8 |
| Z3-... | ...
Der Inhalt der Datensätze soll also Spalten- und Zeilenweise angeordnet werden, max. vier in einer Reihe.
Und dieAusserdem sollen / müssen die Datensätze bei der Ausgabe spaltenabhängig unterschiedlich gewrappt werden.
Und hier -nach deinem Tipp- meine Lösung.
Es geht nämlich noch etwas eleganter. Darauf gekommen bin ich über diesen Thread hier in der Liste:
http://lists.typo3.org/pipermail/typo3-german/2005-October/005315.html.
Das "Geheimnis" ist die Variable 'cObj:parentRecordNumber' die mit Hilfe von getText ausgelesen werden kann.
Sie liefert nämlich die Anzahl der gefundenen Datensätze im CONTENT-Object. Ein kurzer Test hat mir Klarheit verschafft.
Und mit deinem Tipp und der Erkenntnis aus dem Thred konnte ich meine Lösung "stricken" :-)))
renderObj = COA
renderObj {
// Anzahl der gefundenen Datensätze durch 4 dividieren
// und den Rest als Register-Variable speichern
10 = LOAD_REGISTER
10.intRest.stdWrap.dataWrap = {cObj:parentRecordNumber}%4
10.intRest.prioriCalc = 1
// Rest zur Fallunterscheidung mit dem CASE-Objekt auswerten
// Rest = 0 > letztes Element in einer Zeile (4., 8., usw.)
// Rest = 1 > erstes Element in einer Zeile (1., 5., usw.)
// in allen anderen Fällen ist es ein Element zwischen dem 1. und dem 4 in einer Zeile
20 = CASE
20 {
key.data = register:intRest
default = LOAD_REGISTER
default.class = subc
0 = LOAD_REGISTER
0.class = subcr
1 = LOAD_REGISTER
1.class = subcl
}
...
// jetzt kann das Class-Atrribut dynamisch gesetzt werden
stdWrap.dataWrap = <div class="{register:class}">|</div>
}
Hab wieder viel dazugelernt und die Lösung begeistert mich.
Gruß, Johannes.
More information about the TYPO3-german
mailing list