Morgen Heike,
Du hast viele Fragen und wirst wohl auch weiter welche haben. Nichts für Ungut, aber ich denke, Du solltest Dir ein TYPO3-Buch zulegen.
Zugegeben ist mein Script viel komplizierter (und mittlerweile sehr alt), als das was Du bräuchtest. Denn es geht von vier Inhaltsspalten im Backend, stell aber maximal drei Spalten im Frontend und zwar in verschiedenen Reihenfolge – ja nach dem welche Inhaltsspalten in BE Inhalt haben.
Ich weiß nicht, was Du genau erreichen willst, aber ein einfaches Beispiel:
Layout mit maximal drei Spalten (sowohl im BE als auch im FE), wobei die Hauptinhaltsspalte immer Inhalt hat (wenn nicht zumindest die „Normal“-Spalte Inhalt hat, sollte auch keine Seite erstellt, bzw. publiziert werden).
Aber Vorsicht – da auf die Schnelle erstellt, sind Schreib- und sonstige Fehler nicht aus zu schließen. Und natürlich kann man es viel kompakter schreiben.
# Normal
temp.content = CONTENT
temp.content {
table = tt_content
select.orderBy = sorting
select.where = colPos = 0
select.languageField = sys_language_uid
stdWrap.wrap = <div id="hauptspalte"><!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end--></div>
# stdWrap.required = 1
}
# Links
temp.left = CONTENT
temp.left {
table = tt_content
select.orderBy = sorting
select.where = colPos = 1
select.languageField = sys_language_uid
stdWrap.wrap = <div id="linke-spalte">|</div>
}
# Rechts
temp.right = CONTENT
temp.right {
table = tt_content
select.orderBy = sorting
select.where = colPos = 2
select.languageField = sys_language_uid
stdWrap.wrap = <div id="rechte-spalte">|</div>
}
############################
page.999 = COA
page.999 {
# wrap = <div id="page">|</div>
10 = COA
10 { ### Nur die Hauptspalte ###
wrap = <div id="content-wrap" class="normal">|</div>
if {
isFalse.numRows < styles.content.getLeft
isTrue = 1
isTrue.if {
isFalse.numRows < styles.content.getRight
}
}
10 < temp.content
}
20 = COA
20 { ### Zwei Spalten - Links und Normal ###
wrap = <div id="content-wrap" class="links-normal">|</div>
if {
isFalse.numRows < styles.content.getRight
isTrue = 1
isTrue.if {
isTrue.numRows < styles.content.getLeft
}
}
10 < temp.left
20 < temp.content
}
30 = COA
30 { ### Zwei Spalten - Normal und Rechts ###
wrap = <div id="content-wrap" class="normal-rechts">|</div>
if {
isTrue.numRows < styles.content.getRight
isTrue = 1
isTrue.if {
isFalse.numRows < styles.content.getLeft
}
}
10 < temp.content
20 < temp.right
}
40 = COA
40 { ### Alle drei Spalten ###
wrap = <div id="content-wrap" class="links-normal-rechts">|</div>
if {
isTrue.numRows < styles.content.getRight
isTrue = 1
isTrue.if {
isTrue.numRows < styles.content.getLeft
}
}
10 < temp.left
20 < temp.content
30 < temp.right
}
}
Der Rest ist CSS. Du hast für jede Situation eine andere Klasse. Kannst also alle Elementen in Abhängigkeit dieser Klassen Formatieren, wie Du möchtest.
EDIT:
Ich weiß nicht warum Zeilen wie diese hier
isTrue.numRows < styles.content.getLeft
im Editor hier so geändert werden:
isFalse.numRows/">numRows < styles.content.getLeft
.