Datensätze per RECORD einlesen und an bestimmter Stelle splitten
| Autor | Nachricht |
|---|---|
|
Verfasst am: 24. 02. 2009 [15:45]
|
|
|
nk36
Themenersteller
Dabei seit: 09.03.2006
Beiträge: 42
|
hallo, ich lese die Datensätze einer bestimmten Tabelle per Typoscript aus und will gerne nach jedem Xten Datensatz einen neuen Div-Container beginnen. Ist das über Typoscript möglich und wenn wie? zur Veranschaulichung mal ein Beispiel: reguläre Ausgabe HTML So will ich es gerne haben: HTML <div class="box"> <p>Titel 1</p> <p>Titel 2</p> </div> <div class="box"> <p>Titel 3</p> <p>Titel 4</p> </div> die Datensätze lese ich über RECORDS: TYPOSCRIPT 20= RECORDS 20.wrap = <div class="box">|</div> 20.source.current=1 20.tables = tt_content 20.conf.tt_content = COA 20.conf.tt_content { # ... } kann ich irgendwie den Index der aktuellen Reihe auslesen? dann würde das wahrscheinlich über if abfragen klappen Danke! |
|
Verfasst am: 26. 02. 2009 [11:37]
|
|
|
kraftb
Dabei seit: 31.03.2004
Beiträge: 10
|
Hallo ! Ja. Das sollte klappen (ungetestet) - wenn du zum beispiel folgerndermassen deinen Inhalt ausgibst (im RECORDS objekt): TYPOSCRIPT 20.conf.tt_content = COA 20.conf.tt_content { dataWrap = <p>{field:title}</p> } dann solltest du mit folgender änderung ein bei 1 beginnende nummerierung erhalten: TYPOSCRIPT dataWrap = <p>{cobj:parentRecordNumber}: {field:title}</p> nun könntest du "klug" mit prioriCalc und dem modulo operator "%" (siehe "Modulo" auf wikipedia) nach jedem "xten" element ein neues div beginnen. ca. so (ungetestet): TYPOSCRIPT 20 = RECORDS 20 { tables = tt_content wrap = <div class="box">|</div> source.current=1 conf.tt_content = COA conf.tt_content { prepend = TEXT prepend { value = </div><div class="box"> # wenn z.B. das 3. Element ausgegeben wird (parentRecordNumber = 3) # dann ergibt: (3-1) = 2 ... und 2 % 2 == 0 if.isFalse.dataWrap = ({cobj:parentRecordNumber}-1) % 2 if.isFalse.prioriCalc = intval # jedoch nicht beim allerersten objekt (parentRecordNumber = 1) ausführen # denn: (1-1) % 2 => 0 .. # also: parentRecordNumber > 1 if.isGreaterThan.data = parentRecordNumber if.value = 1 } dataWrap = <p>|</p> } } Wie gesagt: ungetestet - aber das wäre die Lösung die ich wählen würde. Eventuell bedard das "if" konstrukt im "prepend" etwas finetuning. Im Prinzip wird halt nur nachgesehen - ist die aktuelle position durch zwei teilbar (oder besser gesagt - das element vor der aktuellen position (-1) - und wenn dies der fall ist, wird VOR dem aktuellen <p>|</p> noch ein </div><div class="box"> eingefügt ... und da das ganze ja sowieso in einem wrap = <div class="box">|</div> sitzt, passt es auch mit dem <div> davor und danach ... grüsse, Bernhard [Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 26.02.2009 um 11:39.] |
|
Verfasst am: 11. 03. 2009 [16:00]
|
|
|
nk36
Themenersteller
Dabei seit: 09.03.2006
Beiträge: 42
|
hi, nun komm ich endlich zum testen. Es klappt nicht auf anhieb (jedes element wird nun mit der div.box gewrappt), aber du hast mir mit cobj:parentRecordNumber schon sehr geholfen! ich werd da jetzt mal ein bisschen rumprobieren. danke! ps. auch fuer deine wunderbare kb_shop extension!! |



