Benutzer-Werkzeuge

Webseiten-Werkzeuge


typo3:templating:marker-subparts

Marker und Subparts

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.

Das Templating mit Markern und Subparts gilt als veraltet!
Für neue Websites ist die Verwendung von Fluid-Templates dringend empfohlen.
In älteren, PiBase-basierten TYPO3-Extensions sind Marker leider immer noch anzutreffen.

<!-- 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 {
    ...
  }
}

Marker und workOnSubpart

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 {
     ...
    }
  }
}

Marker innerhalb von Subparts nutzen

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.

typo3/templating/marker-subparts.txt · Zuletzt geändert: 2017/05/24 21:10 von admin