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
<div class="box">
<p>Titel 1</p>
<p>Titel 2</p>
<p>Titel 3</p>
<p>Titel 4</p>
</div>
So will ich es gerne haben:
<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:
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!
Hallo !
Ja. Das sollte klappen (ungetestet) - wenn du zum beispiel folgerndermassen deinen Inhalt ausgibst (im RECORDS objekt):
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:
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):
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 ... 8-)
grüsse,
Bernhard
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!!