Das mag ich so sehr an der Skriptsprache Typoscript meines Lieblings-WCMS TYPO3: Tausenderlei Anweisungen und Möglichkeiten – nur ein paar logische und sinnvolle Sachen wurden manchmal (wahrscheinlich aus Boshaftigkeit) weggelassen, damit man sich ‘ne Rübe machen muss, wie man sein Problem trotzdem gelöst kriegt.
Letztens zum Beispiel bei der Umsetzung eines Layouts mit optional 2 oder 3 Inhalts-Spalten: Genutzt werden sollten dafür die vordefinierten Spalten “Links”, “Normal” und “Rand” im TYPO3-Backend. Der Rand soll immer sichtbar sein. “Links” ist optional (also je nachdem, ob Inhalte hinterlegt sind oder nicht) und “Normal” nutzt dann den jeweils verfügbaren restlichen Platz.
Sehr praktisch wäre für diesen Zweck eine stdWrap-Bedingung “ifNotEmpty” gewesen. Wäre. Und so galt es, dafür ein Workaround zu schreiben, welches ich hiermit kurz vorstellen möchte, falls jemand einmal ein ähnliches Problem zu lösen hat. Hat mich ein bis zwei Stündchen Probieren, Verwerfen und Googeln gekostet. Hab mir die ganze Geschichte auch gerade noch einmal bei einem anderen kleinen Projekt nachgebaut – funktioniert also bestens :-)
Hier erstmal unkommentiert das HTML-Template-Snippet:
..
<div class="m3">
<div>
###CONTENT-LINKS###
###CONTENT###
</div>
</div>
<div class="r1">
###CONTENT-RAND###
</div>
..Die Marker CONTENT und CONTENT-RAND werden wie gewohnt befüllt. Die Besonderheit liegt hier im Marker CONTENT-LINKS. Dieser wird durch folgendes Typoscript befüllt (muss evt. noch an die eigenen Gegebenheiten und Code-Stile angepasst werden):
temp.CONTENT-LINKS = COA
temp.CONTENT-LINKS {
10 = CASE
10 {
key.field = uid
default = CONTENT
default {
table = tt_content
select.orderBy = sorting
select.where = colPos = 1
}
}
}
template.CONTENT-LINKS = COA
template.CONTENT-LINKS {
10 < temp.CONTENT-LINKS
10 {
stdWrap {
ifEmpty.cObject = TEXT
ifEmpty.cObject.value =
wrap = <div class="l1">|</div></div><div class="m2">
required = 1
}
}
}
page.10.marks.CONTENT-LINKS < template.CONTENT-LINKSDas CSS muss dann entsprechend den Klassen “l1″, “m2″, “m3″ und “r1″ angelegt werden. Wobei die Zahl bei mir hier für die Breitenverteilung steht und l, m und r für Links, Mitte und Rand :-)
Wenn Fragen auftauchen oder jemand einen besseren Vorschlag hat, dann einfach einen Kommentar schreiben. Ansonsten viel Erfolg damit!
–
Kleine Werbepause / kleiner Gefallen:
Ich bin gerade äußerst urlaubsreif. Reicht ja auch ne Woche irgendwo hin und was angucken – Berlin zum Beispiel. Ein guter Anlaufpunkt, um z.B. eine Ferienwohnung zu buchen ist das Internet. Weil für ne Woche ein Hotel etwas zu expensiv wäre und man das Geld lieber in andere Dinge investiert (z.B. gutes Essen, Kultur, Shopping). Vielen Dank für die Aufmerksamkeit.
