Oh ha, ich kann's noch garnicht glauben, aber ich habe es tatsächlich hinbekommen!! :o
Also es ist ein kleiner Trick nötig, aber es lohnt sich allemal. Falls es jemand benötigt oder wissen will, wofür ich das gebraucht habe:
• das Template wird mit TemplaVoila umgesetzt
• der Benutzer/Redakteur soll das normale Inhalts-Modul im BE nutzen können, um Inhalte einpflegen zu können
• die generierten Content-Elemente sollen mit "first|middle|last" gekennzeichnet werden
Der Zweck des Ganzen (ein Beispiel):
Durch die Kennzeichnung der Content-Elemente (z.B. <div class="last">...</div>) lassen sich optimale CSS-Anpassungen erstellen. Beispielsweise hat jedes Content-Element einen Abstand nach unten hin, sodass das folgende Element nicht direkt "dranklebt". Jedoch soll das letzte Content-Element der Seite diesen Abstand nach unten hin nicht haben, da kein Content mehr kommt und das Design "zu Ende" ist.
Da ich Webseiten auch gestalte, ist mir das finale Ergebnis sehr wichtig - jeder Abstand muss exakt stimmen. Daher ist meine Entwicklung hauptsächlich für CSS-Perfektionisten, die z.B. keine negativen Margins/Paddings benutzen wollen, um die Inhalte wieder zurecht zu rücken.
Den Ansatz für OptionSplit im Content findet ihr bei Typo3 Wizard:
http://www.typo3wizard.com/de/artikel/das-content-objekt.html
Hier die Vorgehensweise:
• Template erstellen/Mappen mit TemplaVoila
Die Struktur könnte z.B. so aussehen:
<body>
<div id="temp_content"></div>
<div id="content">
Content
</div>
</body>
Wichtig: Es muss eine Art "Platzhalter-Container" erstellt werden - in meinem Fall "<div id="temp_content"></div>". Dieser Container wird später im Code nicht mehr sichtbar sein. Der Trick ist, dass der normale Content über das normale BE-Modul eingepflegt wird, auf einen ObjectPath übertragen und später über das DataStructure-XML gelöscht wird.
Mapping:
body: Container for elements (ROOT)
div#temp_content: Element > "Content Elements", Mapping-Action > OUTER (Include Tag)
div#content: Element > "TypoScript Object Path" (Name z.B. "lib.content"), Mapping-Action > INNER (Exclude Tag)
Dann:
• DataStructure-XML editieren
Wechselt nun in die "Page templates"-Ansicht (links im Menü "TemplaVoila" usw.) und klickt auf den gelben Stift rechts neben dem DataStructure-Template-Icon (DS). Das XML editiert Ihr am besten in einem Text-Editor (Copy und dann wieder Paste) und geht zur folgenden Stelle:
<TypoScript><![CDATA[
10= RECORDS
10.source.current=1
10.tables = tt_content
10.wrap = <!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end-->
]]></TypoScript>
Hier fügt ihr diesen zwei Zeilen an die Zeile "10.wrap = <!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end-->" an:
10.conf.tt_content = TEXT
10.conf.tt_content.value =
Das XML speichern und anschließend Cache leeren.
Zuletzt:
• TypoScript editieren
Im TypoScript stehen z.B. oben die üblichen Zeilen und dann muss unten nur noch der TypoScript Object Path "lib.content" mit dem Inhalt gefüllt werden:
page = PAGE
page.typeNum = 0
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page
[...]
lib.content = COA_INT
lib.content {
10 = CONTENT
10 {
table = tt_content
renderObj = COA
renderObj {
stdWrap.outerWrap = |###SPLIT###
10 < tt_content
}
}
stdWrap.split {
token = ###SPLIT###
wrap = <div class="content_first">|</div> |*| <div class="content_middle">|</div> |*| <div class="content_last">|</div> ||
}
}
Speichern, fertig. Von jetzt werden alle Content-Elemente mit den DIV-Klassen "content_first", "content_middle" und "content_last" gekennzeichnet. Bei vier Elementen z.B. wäre die Struktur dann
<div id="content">
<div class="content_first">...</div>
<div class="content_middle">...</div>
<div class="content_middle">...</div>
<div class="content_last">...</div>
</div>
Vielleicht ist diese Lösung für jemanden ja mal nützlich :-)
Grüße,
tech7