Dies ist eine alte Version des Dokuments!
Marker und Subparts werden stets mit 3 Rautenzeichen eingeleitet und beendet. Die Großschreibung des Bezeichners ist keine zwingende TYPO3-Vorgabe, wird aber der Übersicht und Einheitlichkeit halber empfohlen. Der Name des Bezeichners ist frei wählbar. Subparts können in HTML-Kommentare gesetzt werden; Marker nicht. Die oft gesehenen Angaben begin und end dienen nur der Übersicht und werden nicht von TYPO3 ausgelesen.
<!-- Inhalt der HMTL-Vorlage --> ... <div id="logo">###LOGO###</div> <!-- ###NAVIGATION### begin --> <ul id=“navigation“> <li><a href=“#“>Home</a></li> ... </ul> <!-- ###NAVIGATION### end --> ...
Bei Markern wird der Inhalt an die gewählte Stelle eingefügt. Bei Subparts wird der in der Vorlage dazwischenliegende Inhalt ersetzt. Auf diese Weise kann ein HTML-Template zu Layoutzwecken mit Beispiel-Inhalt gefüllt werden, der mit Subparts umschlossen wird und von TYPO3 ersetzt werden kann.
Im PAGE-Objekt wird ein TEMPLATE-Objekt erzeugt, dem die HTML-Vorlage zugewiesen wird. Marker und Subparts werden angesprochen und mit dem gewünschten Inhalt ersetzt:
page.10 = TEMPLATE page.10 { template = FILE template.file = fileadmin/vorlage.html marks.LOGO = IMAGE marks.LOGO { ... } subparts.NAVIGATION = HMENU subparts.NAVIGATION { ... } }
Durch workOnSubpart = DOKUMENT wird nur der Teil zwischen den beiden Subpart-Bezeichnern als Vorlage verwendet. Der Rest der Template-Vorlage (<head> <body>, <title> <meta> etc.) wird ausgeschlossen. Wichtig, da diese Elemente von TYPO3 immer selbst in den Quellcode der Seite eingefügt werden und über weiteres Typoscript angepasst werden können!
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Seitentitel</title> </head> <body> <!-- ###DOKUMENT### begin --> <div>###IMAGE###</div> <div>###CONTENT###</div> <div>###FOOTER###</div> <!-- ###DOKUMENT### end --> </body>
page.10 = TEMPLATE page.10 { template = FILE template.file = fileadmin/vorlage.html workOnSubpart = DOKUMENT marks { HEADER = IMAGE HEADER { ... } CONTENT < styles.content.get FOOTER = TEXT FOOTER { ... } } }
Standardmäßig wird der gesamte Teil zwischen zwei Subparts komplett ersetzt. Eventuell darin enthaltene Marker können daher nicht genutzt werden.
Um dies doch zu erreichen, kann mit substMarksSeparately = 1 eine sequenzielle Ersetzung eingestellt werden: zuerst werden die Subparts ersetzt, dann die Marker. Wenn der gewünschte Marker zusätzlich unter subparts.SUBPART an die gewünschte Stelle des Wertes gesetzt wird, kann er mit marks.MARKER ersetzt werden.
<!-- ###SUBPART### --> <div>###MARKER###</div> <!-- ###SUBPART### -->
page = PAGE page { 10 = TEMPLATE 10 { template = FILE template.file = fileadmin/vorlage.html substMarksSeparately = 1 subparts { SUBPART = TEXT SUBPART.value = Hello ###MARKER### } marks { MARKER = TEXT MARKER.value = world! } } } Ausgabe: Hello world!
Selbstverständlich wird damit nur der Marker ersetzt. Das div-Element wird komplett vom Subpart entfernt und muss mit einem wrap neu hinzugefügt werden.