Nachdem ich auf dem TYPO3camp München 2011 und der T3AK12 (auch in München) schon Sessions bzw. Vorträge über das Thema gehalten habe, möchte ich eine kleine Reihe von Tutorials hier anbieten.
Angefangen wird mit dem neuen TypoScript Objekt FLUIDTEMPLATE.
Als Alternative zum Marker Based Templating (richtig Old School) und dem teils gehasstem, teils verehrtem TemplaVoilá gibt es nun seit TYPO3 4.5 das FLUIDTEMPLATE. Es ist keine Installation nötig, man kann es direkt per TypoScript initialisieren:
page = PAGE page.10 = FLUIDTEMPLATE page.10.file = fileadmin/template/my_template.html |
Hiermit haben wir dem System gesagt, dass das Template my_template.html genutzt werden soll.
Wie üblich, werden verschiedene Elemente des Templates im TypoScript zusammengebaut, wie z.B. verschiedene Menus. Diese speichern wir in temporären Objekten namens temp.mainMenu, temp.subMenu oder auch temp.footerMenu.
Ich gehe jetzt mal davon aus, dass jeder weiß, wie man ein Menu im TypoScript erstellt, daher kopieren wir das fertige Objekt direkt in das FLUIDTEMPLATE:
page.10.variables { mainMenu < temp.mainMenu subMenu < temp.subMenu footerMenu < temp.footerMenu } |
Wir kopieren unsere erstellen Menustrukturen in Variablen im FLUIDTEMPLATE, um sie dann im HTML direkt anzusprechen:
<div id="mainMenu"> <f:format.html>{mainMenu}</f:format.html> </div> |
Man sieht an dem
Das Gesamte kann jetzt natürlich mit allen möglichen TypoScript Objekten gefüllt werden. Auch Partials und Sections sind nutzbar, doch der Einfachheit halber soll dieses Beispiel ausreichen.
Natürlich kann man auch das HTML je nach TypoScript Objekt abhängig machen, indem man die Wenn-Abfrage von Fluid nutzt. So kann ich die HTML-Struktur abhängig von einem möglichen zweiten Menu machen und die Ebenen jeweils benennen:
<f:if condition="{submenu}"> <f:then> <div id="content_wrap"> <div id="submenu"> <f:format.html>{subMenu}</f:format.html> </div> <div id="content"> <f:format.html>{content}</f:format.html> </div> </div> </f:then> <f:else> <div id="content_wide"> <f:format.html>{content}</f:format.html> </div> </f:else> </f:if> |
Im zweiten Teil erkläre ich, wie man die backend_layouts nutzen kann, um den Content Bereich gemütlich mit verschiedenen Layouts zu füttern.