In Contao 3.3 wurde der Funktionsumfang des Template-Systems deutlich erweitert. So ist es jetzt möglich von anderen Templates abzuleiten, nur Teilbereiche aus Core-Templates zu überschreiben und Templates in einzelne Bereiche aufzuteilen.

Tipp: Nutzen Sie die Möglichkeit zwischen der Template- und HTML-Ansicht zu wechseln, um die Beispiele einfach nachvollziehen zu können.

Template-Blöcke

Mit den Funktionen block() und endblock() lässt sich ein Template in Bereiche unterteilen. Das Template einer Formularzeile könnte folgendermaßen aussehen:

<div>
    <?php $this->block('label') ?>
        <label><?php echo $this->label ?></label>
    <?php $this->endblock() ?>
    <?php $this->block('field') ?>
        <input type="text" name="<?php echo $this->name ?>">
    <?php $this->endblock() ?>
</div>
<div>
    <label>Vorname</label>
    <input type="text" name="vorname">
</div>

Vererbung und updatesicheres Überschreiben

Wenn Sie von diesem Template mit extend() ableiten, können Sie die einzelnen Blöcke überschreiben oder erweitern, mit parent() können Sie den Inhalt des ursprünglichen Blocks einfügen.

<?php $this->extend('form_row') ?>
<?php $this->block('label') ?>
    <label class="special-label"><?php echo $this->label ?></label>
<?php $this->endblock() ?>
<?php $this->block('field') ?>
    <div><?php $this->parent() ?></div>
<?php $this->endblock() ?>
<div>
    <label class="special-label">Vorname</label>
    <div><input type="text" name="vorname"></div>
</div>

Sie können extend() auch verwenden um nur die Template-Daten zu modifizieren, bevor das eigentliche Template verarbeitet wird. Das folgende Beispiel erweitert das Galerie-Template um eine CSS-Klasse mit der Anzahl der Bilder pro Reihe. Dabei kann dem Template der gleiche Dateiname wie dem Core-Template gegeben werden – so passen Sie das Template updatesicher an.

<?php $this->extend('ce_gallery') ?>
<?php $this->class .= ' images-per-row-' . $this->perRow ?>
<div class="ce_gallery block images-per-row-4">
    <ul>
        ...
    </ul>
</div>

Verschachtelte Blöcke

Zusätzlich können Sie Blöcke verschachteln, um noch genauer festzulegen welche Bereiche verändert werden. Ein gutes Beispiel dafür ist das Template fe_page in Contao 3.3. Mit dem Block body könnte z. B. der komplette Inhaltsbereich überschrieben werden. Würden Sie etwa nur den Footer anpassen wollen, überschreiben oder erweitern Sie nur den Block footer.

Fazit

Die Erweiterung des Template-Systems ist eines der wichtigsten neuen Features, die Contao je erhalten hat. Die Möglichkeit Templates „updatesicher“ zu überschreiben, wird vielen Benutzern die Vorbehalte nehmen die Templates und damit das HTML-Markup bei Bedarf projektspezifisch anzupassen.

Alle RockSolid Themes verwenden bereits die neuen Template-Funktionen. Für mehr Beispiele laden Sie sich unser kostenloses Theme Open Sauce für Contao 3.3 herunter und sehen sich den Templates-Ordner an.

Kostenlos über kommende Inhalte informiert werden

Neue Beiträge und exklusive Freebies direkt in Ihre Inbox

Holen Sie sich die monatlichen, kostenlosen Updates über neue Artikel, Themes und Erweiterungen rund um Contao. Kein Spam. Nur nützliche und exklusive Inhalte und Sie können sich mit nur einem Klick abmelden. Bleiben Sie auf dem Laufenden!

Über den Author

Martin Auswöger

Martin Auswöger

Martin ist einer der Gründer von RockSolid Themes und beteiligt sich als Core-Developer an der Entwicklung von Contao. Die Suche nach effizienten und intelligenten Lösungen treiben ihn täglich an. Für Kochen, Gesellschaftsspiele oder eine gemütliche Bergtour kann man ihn fast immer begeistern.

Folgen Sie Martin auf Mastodon und GitHub.

RockSolid Themes Blog

Das RockSolid Themes Entwickler-Team schreibt über Webdesign, Entwicklung und Neuigkeiten. Plus laufende hilfereiche Tipps, Tutorials und Inhalte rund um Contao.

Themes kostenlos testen

Open Sauce free

Testen Sie unsere Erweiterungen und Themes mit Open Sauce. Unserem responsive Free Theme für Contao.

Immer auf dem Laufenden