[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