Zum Inhalt springen
Abstraktes Relief aus dunklem Papier: zwei Gussformen, eine schlicht rund, eine facettiert, mit den gegossenen Teilen daneben

Antlers oder Blade in Statamic: Wann welche Template-Sprache passt

Antlers passt zu Statamic-Websites, deren Templates vor allem Inhalte ausgeben; Blade passt, wenn das Team mit Laravel arbeitet und die Seiten eng mit Anwendungscode verzahnt sind. Statamic 6 unterstützt beide, auch im selben Projekt.

6 min Lesezeit Statamic

Statamic rendert Templates mit Antlers, seiner eigenen Template-Sprache, oder mit Blade aus Laravel. Welche Sprache eine Datei nutzt, entscheidet die Endung: .antlers.html oder .blade.php. Die Wahl betrifft weniger die Besucher der Website als die Menschen, die die Templates über Jahre pflegen.

Der Vergleich unten zeigt dieselbe kleine Blogliste in beiden Sprachen, geprüft gegen die Dokumentation auf statamic.dev und den Quellcode von Statamic 6. Warum diese Website auf Statamic 6 läuft, beschreibt Warum wir Statamic 6 für die MARCODES-Website gewählt haben.

Antwort

Antlers für Inhaltsseiten, Blade für Laravel-Teams

Antlers ist auf Statamic zugeschnitten: Tags wie collection, nav oder glide stehen ohne Vorsilbe im Template, Variablen eines Eintrags heißen wie die Felder im Blueprint, Modifier hängen mit einem senkrechten Strich an. Wer eine Marketing-Website mit Sammlungen, Navigationen und Bildern baut, schreibt damit kurze Templates, die auch ein Frontend-Entwickler ohne PHP-Kenntnisse lesen kann.

Blade spielt seine Stärke aus, wenn die Website Teil einer Laravel-Anwendung ist: Livewire-Komponenten, Blade-Komponenten, Formulare mit Validierung, Code aus app/. Ein Team, das ohnehin in Blade denkt, muss keine zweite Syntax lernen. Statamic macht seine Tags dort über Komponenten mit der Vorsilbe s: oder statamic: verfügbar, Modifier über Statamic::modify.

Für die Entscheidung zwischen Livewire und Vue, die oft im selben Gespräch aufkommt, gibt es einen eigenen Vergleich: Livewire oder Vue?.

Vergleich

Was Antlers kann, was Blade kann

Die Tabelle fasst zusammen, was die Statamic-Dokumentation zu Blade und Antlers und die Laravel-Dokumentation zu Blade festhalten.

Zur Geschwindigkeit: Laravel schreibt, dass Blade-Templates in reinen PHP-Code übersetzt und bis zur nächsten Änderung zwischengespeichert werden. Einen offiziellen Vergleich der Laufzeit von Antlers und Blade veröffentlicht Statamic zum 29.10.2026 nicht. Die Antlers-Dokumentation weist darauf hin, dass langsame Ausdrücke nicht bedeuten müssen, dass Antlers langsam ist; möglicherweise holt oder verarbeitet Statamic dahinter viele Daten. Wer es genau wissen will, misst mit dem Profiler die eigene Seite, statt die Sprache zu wechseln.

Antlers Blade
Dateiendung .antlers.html .blade.php
Ausgabe mit {{ }} wird nicht automatisch maskiert; für Nutzereingaben empfiehlt Statamic den Modifier sanitize wird automatisch mit htmlspecialchars maskiert, roh nur mit {!! !!}
Statamic-Tags direkt, etwa collection:blog als Komponente s:collection oder über Statamic::tag
Modifier Pipe, etwa date pipe format Statamic::modify(...)->format(...)
Layout Statamic legt das Layout automatisch um das Template Template wird nicht automatisch umhüllt, Layout per @extends
Schleifenhelfer Antlers-Variablen wie first und total_results $loop von Blade
Laufzeit messen Antlers-Profiler in der Laravel Debugbar kein eigener Profiler von Statamic genannt

Antlers: Tag, Variablen und Modifier ohne Vorsilbe.

resources/views/partials/_blog_list.antlers.html html
<ul>
    {{ collection:blog limit="5" sort="date:desc" }}
        <li>
            <a href="{{ url }}">{{ title }}</a>
            <time datetime="{{ date | format('Y-m-d') }}">{{ date | format('d.m.Y') }}</time>
        </li>
    {{ /collection:blog }}
</ul>

Blade: dieselbe Liste mit der Komponente s:collection und Statamic::modify; Titel und URL werden automatisch maskiert.

resources/views/partials/_blog_list.blade.php php
<ul>
    <s:collection from="blog" limit="5" sort="date:desc">
        <li>
            <a href="{{ $url }}">{{ $title }}</a>
            <time datetime="{{ Statamic::modify($date)->format('Y-m-d') }}">{{ Statamic::modify($date)->format('d.m.Y') }}</time>
        </li>
    </s:collection>
</ul>
Ein Besteckeinsatz: Messer und orange Gabeln liegen in ihren festen Fächern nebeneinander, beide gehören in dieselbe Schublade.

Mischen

Beide Sprachen im selben Projekt

Antlers und Blade lassen sich in einem Projekt mischen, mit klaren Regeln. Ein Antlers-Template kann in einem Blade-Layout stehen; das Layout bekommt den Inhalt des Templates in der Variablen template_content und gibt ihn mit {!! $template_content !!} aus. Umgekehrt legt Statamic um ein Blade-Template kein Layout automatisch. Im Quellcode von Statamic 6 prüft die Klasse View, ob das Template eine Antlers-Datei ist, und verwendet das Layout nur dann. Ein Blade-Template bindet sein Layout deshalb selbst mit @extends ein.

Beim Übertragen eines Templates von einer Sprache in die andere fällt die unterschiedliche Maskierung zuerst auf. Ein Feld mit HTML, etwa der Inhalt eines Bard-Felds, erscheint in Antlers mit {{ content }} als formatierter Text. In Blade zeigt {{ $content }} dieselben Tags als sichtbaren Quelltext, weil Blade maskiert; die Statamic-Dokumentation nennt dafür {!! $content !!}. Umgekehrt gibt Antlers Eingaben aus Formularen ungeprüft aus, wenn sie ohne den Modifier sanitize im Template landen. Beim Umstellen gehört deshalb jede Ausgabe einmal auf den Prüfstand: Ist das Feld redaktionelles HTML oder eine Eingabe von außen?

Innerhalb einer Blade-Datei erlaubt die Direktive @antlers ... @endantlers einen Abschnitt in Antlers. Variablen, die dort entstehen, sind nach dem Block nicht mehr verfügbar. Das hilft beim schrittweisen Umstellen, macht eine Datei aber schwerer lesbar, wenn es zur Gewohnheit wird.

Für die Praxis heißt das: je Bereich eine Sprache. Seiten-Templates, Partials und Page-Builder-Blöcke in einer Sprache, Mail-Vorlagen oder Teile der Laravel-Anwendung gern in der anderen. Diese Website zeigt das Muster: Seiten, Navigation und Page-Builder-Blöcke sind Antlers-Dateien, Blade kommt in einer Mail-Vorlage vor. Erweiterungen des Control Panels sind eine dritte Ebene mit Vue und Inertia; ein Beispiel dafür steht unter Inertia + Vue 3 + Statamic CP: Custom Fieldtype in 30 Minuten.

Übergabe

Lesbarkeit für Nachfolger und Agenturen

Für die Wahl zählt auch, wer die Templates in drei Jahren pflegt. Ein Laravel-Entwickler findet sich in Blade sofort zurecht, in Antlers nach einer kurzen Einarbeitung in Tags und Modifier. Antlers-Templates brauchen kein PHP; wer aus dem Frontend kommt, lernt dort Tags und Modifier, aber keine PHP-Syntax. PHP-Code führt Statamic in Antlers nur in Dateien mit der Endung .antlers.php aus.

Für Redakteure ändert die Template-Sprache nichts. Sie arbeiten im Control Panel mit Blueprints und Feldern, und was sie dort sehen, hängt nicht davon ab, wie das Frontend gerendert wird; die Handgriffe dafür stehen unter Statamic für Redakteure.

Bei einer Übergabe hilft eine kurze Notiz im README: welche Sprache für welchen Ordner gilt, wo Partials liegen und ob @antlers-Blöcke erlaubt sind. Wer ein bestehendes Projekt übernimmt, prüft zuerst, welche Endungen unter resources/views vorkommen, und bleibt bei der Sprache, die dort überwiegt.

Empfehlung

Welche Sprache für ein neues Projekt

Für eine neue Statamic-Website mit Sammlungen, Navigation und Page-Builder schlagen wir Antlers vor, weil Statamic die Sprache für genau diese Aufgaben gebaut hat und die Templates kurz bleiben. Unsere eigene Website ist so gebaut, und auch der Ablauf des Statamic-Migration-Sprints sieht in der zweiten Woche Blueprints und Antlers-Templates vor.

Blade ist die bessere Wahl, wenn Statamic in eine bestehende Laravel-Anwendung kommt, wenn Livewire-Komponenten große Teile der Seiten tragen oder wenn das Team ausschließlich aus Laravel-Entwicklern besteht und das auch bleiben soll. Für solche Vorhaben, bei denen die Anwendung im Vordergrund steht, beschreibt die Seite unserer Laravel-Agentur, wie wir arbeiten.

Wer Statamic-Templates in Auftrag gibt, sollte die Sprache vor dem Start festlegen und im Angebot nennen. Wie wir Statamic-Projekte angehen, steht auf der Seite für Statamic-Entwicklung.

Zwei Sprachen in einem Projekt und unklar, wohin es gehen soll?

Zählen Sie vor jeder Vereinheitlichung die Endungen unter resources/views und notieren Sie, welche Ordner welche Sprache nutzen. Mit dieser Übersicht lässt sich der Aufwand für ein Aufräumen in Personentagen schätzen, bevor jemand eine Datei umschreibt.

Statamic-Entwickler bei MARCODES