Logo for CMSstash

Statamic: Ein Flat-File-CMS für Laravel Entwickler

Das featuremächtige und nutzerfreundliche Flat File CMS Statamic basiert auf Laravel und kann sich gut als Agentur- und Dienstleister-CMS eignen.

Statamic: Ein Flat-File-CMS on Steroids

Statamic ist neben Kirby CMS das leistungsstärkste System aus der Familie der Flat-File-CMS. Hierzulande hat das kommerzielle CMS eine gewisse Bekanntheit erlangt, als der SPIEGEL bei seinem Relaunch 2020 auf Statamic als Content-Editor setzte. Im Vergleich zu dem schlanken Kirby basiert Statamic auf dem umfangreichen PHP-Framework Laravel und setzt in der Vermarktung auf schrille Töne. Es eignet sich vor allem für kleinere Unternehmen und für den Mittelstand.

Screenshot Startseite Statamic

Statamic ist im Jahr 2012 als Nebenprojekt von Jack McDade entstanden und sorgte damals für frischen Wind im Flat-File-Markt. Auf Grund des großen Erfolges entwickelte sich zwischen 2014 und 2015 aus dem Projekt ein kleines Unternehmen. Mit Version 2 wechselte Statamic im Jahr 2016 auf das große PHP-Framework Laravel und transformierte zu einem Premium-CMS für ein etwas höheres Preis-Segment. 2020 ist Statamic 3 erschienen, das als Laravel-Package konzipiert ist und auch eine kostenfreie Version für private Webseiten anbietet. Seitdem gibt es eine evolutionäre Entwicklung bis zur aktuellen Version 5.

Der Flat-File Guide bietet auf über 80 Seiten einen Marktüberblick und stellt sieben Flat-File-CMS im Detail vor. Jetzt kostenlos und ohne Registrierung herunterladen.

Statamic für Content Manager

Die übersichtliche und hell gestaltete Autoren- und Administrations-Oberfläche von Statamic folgt einer Drei-Teilung mit der Haupt-Navigation auf der linken Seite, den Inhalten in der Mitte und einem Context-Menü auf der rechten Seite.

Screenshot der Autorenumgebung von Statamic

Die Haupt-Inhalte werden im Content-Menü unter dem Punkt "Collections" angelegt. Eine Collection ist lediglich ein Container, der jede Art von Eintrag ("Entries") beinhalten kann: Statische Seiten, Artikel, News, Blog-Einträge oder auch Produkt-Blätter. Über die Collection selbst werden globale Eigenschaften wie die Sortierung der Einträge, das Template und das Layout definiert. Weitere Punkte im Content-Menü sind Tags, ein ausgereifter Medien-Manager und die sogenannten "Globals", mit denen sich globale Inhalte wie ein Footer oder eine Sidebar bearbeiten lassen. Unter dem Punkt "Navigation" kann man die Seiten-Navigation unabhängig von der Inhalts-Struktur erstellen.

Für Fließtexte kann entweder ein Markdown-Editor mit einer Preview-Funktion oder ein Editor mit dem Namen "Bard" definiert werden. Bard startet erst einmal als gewöhnlicher HTML-Editor. Tatsächlich kann Bard jedoch zu einem kompletten Block-Editor ausgeweitet werden, sodass der Autor jede beliebigen Inhalts-Typen und Feldgruppen im Block-Stil verwenden kann. Damit bricht Statamic die starre Vorgabe von Eingabeformularen vollständig auf und lässt dem Autor weitgehende Freiheiten bei der Seitengestaltung.

Sehr gelungen ist bei Statamic die Live-Preview für Autoren. Dabei lässt sich die Seiten-Vorschau auf der rechten Seite über die Eingabe-Leiste auf der linken Seite in Echtzeit bearbeiten.

Live-preview von Statamic

Im Vergleich zu Kirby wirkt die Autorenoberfläche von Statamic mit dem formularbasierten Ansatz auf den ersten Blick eher traditionell. Anders als Kirby bietet Statamic jedoch ein Administrations-Interface an, mit dem alle Eingabeformulare über Blueprints und dem Formular-Manager definieren werden können. Der Formular-Manager von Statamic bietet über 40 verschiedene Eingabefelder an und ermöglicht eine Konfiguration von Formularen bis ins letzte Detail.

Screenshot von den Fieldtypes des CMS Statamic

Das Prinzip der Content-Modellierung über Fieldtypes ist bei vielen modernen Flat-File-CMS verbreitet. Bei Systemen wie Kirby oder Grav gehört es jedoch zu den Aufgabe des Entwicklers, die Felder über YAML-Dateien zu definieren. Ein ausgereiftes User Interface für die Formular-Definition bietet im Flat-File-Bereich nur Statamic an. Damit steht Statamic klar in der Tradition von ExpressionEngine und erinnert stark an das populäre Craft CMS. Gleichzeitig rückt Statamic mit der ausgereifte Möglichkeit der Content-Modellierung in die Nähe der Headless-CMS, bei denen die Autorenoberflächen ebenfalls über Formular-Felder als Collections definiert werden. Folgerichtig hat Satamic in der Administrationsoberfläche inzwischen einen GraphQL-Editor integriert.

All diese ausgereiften Features richten sich allerdings an Entwickler und sind für Autoren weniger relevant. Autoren stehen vielmehr vor der Entscheidung, ob sie mit Statamic eher konventionell auf Basis von Formularen in Kombination mit einer hervorragenden Preview arbeiten möchten, oder ob sie die stärker individualiserte Autorenoberfläche mit einem visuellen Ansatz von Kirby präferieren.

Statamic für Entwickler

Technisch hat Statamic über die Jahre einen starken Wandel durchlaufen. Die erste Version basierte noch auf dem schlanken Micro-Framework Slim. Seit Version 2 setzt Statamic auf das beliebte PHP-Framework Laravel, das Frontend-Framework Vue.js und das CSS-Framework Tailwind. Seit Version 3 ist Statamic als Laravel-Package konzipiert. Die folgenden Versionen 4 und 5 waren mit kontinuierlichen Verbesserungen eher evolutionär und führten die Architektur von Version 3 fort. Statamic benötigt PHP 8.1 und Version 11 von Laravel. Die technische Entwicklung macht sich auch in der Größe bemerkbar. Während Version 1 von Statamic noch mit wenigen MB auskam, benötigt die aktuelle Version mit seinen Abhängigkeiten über 100 MB und ist damit noch schwergewichtiger als Grav CMS.

Die Installation von Statamic erfolgt über eine eigene CLI, die über Composer heruntergeladen werden kann:

composer global require statamic/cli

Nach der Installation kann man ein neues Statamic-Projekt über die CLI erstellen:

statamic new $project_name

Bei unserem Versuch einer Installation gab es schon beim Download der CLI mit Composer einen Blocker, weil das GitHub-Repository privat ist und einen SSH-Key erfordert. Auch bei früheren Versionen von Statamic gab es immer wieder Probleme, insbesondere beim Test-Betrieb in einem Sub-Folder. All das ist für Entwickler zwar lösbar, erfordert im Vergleich zu anderen Flat-File-CMS aber zusätzlichen Aufwand.

Für die Frontend-Entwicklung empfiehlt Statamic die eigene Template-Sprache "Antlers" oder die Template-Sprache "Blade" von Laravel. Als CSS-Framework wird Tailwind empfohlen, für das Compiling Vite. Bei Nutzung der GraphQL oder REST-API kann man natürlich jeden beliebigen Stack nutzen. Zusätzlich bietet Statamic auch einen eigenen Static Site Generator an. Ansonsten ist Statamic tief in das Laravel-Framework integriert und richtet sich damit vor allem an die Laravel-Gemeinde.

Grundsätzlich speichert Statamic die Inhalte, die der Autor über die Formulare eingibt, in Markdown und FrontMatter ab. Im FrontMatter werden dabei mehr oder weniger alle Inhalte abgespeichert, die nicht aus dem normalen Markdown-Content-Feld kommen:

---
title: About Me
template: about
fieldset: about
id: 72c016c6-cc0a-4928-b53b-3275f3f6da0a
fun_facts:
  - "I grew up in West Virginia but moved to California in the mid 90s"
  - "My life is about as organized as the $5 DVD bin at Wal-Mart"
  - "My first computer was a Commodore 64"
  - "I'm a paper cut survivor"
  - "I have a restraining order against me from J.K. Rowling but I promise it's just a misunderstanding"
  - "I hope one day I love something the way women in commercials love yogurt"
  - "I’m not smart. I just wear glasses."
---
My name is Niles Peppertrout. I am a relatively new Park Ranger working at Redwood Nation Park with a background in Applied Harry Potter Sciences from [Frostburg University](http://frostburg.edu). I've always loved the outdoors but never dreamed I'd get paid to wander them. [Join me on my adventure](/blog)!
![Me](/assets/img/me.jpg)

Bei der Theme-Entwicklung können die Markdown-Inhalte über das Template-Tag {{ content }} ausgegeben werden (Beispiel mit Antler). Die Inhalte aus dem FrontMatter sind über die jeweiligen Namen erreichbar, in diesem Beispiel also {{ fun_facts }}:

<section class="regular">
    <header>
        <h1>{{ title }}</h1>
        {{ sub_title wrap="h2" }}
    </header>
    <article class="content">
        {{ content }}
        <h2>Fun Facts</h2>
        {{ fun_facts | ul }}
    </article>
</section>

Neben der Ausgabe von Variablen kann der Entwickler über den Controller und das ViewModel komplexere Logiken in ein Theme integrieren. Dazu kann bei dem ViewModel eine Klasse im YAML-File bzw. im Frontmatter angegeben werden, die dann zur Ausführung kommt. Das Beispiel in der Statamic-Dokumentation sieht wie folgt aus:

title: "A Long Article Plz Read it Mmmkay?"
view_model: App\ViewModels\ArticleStats
content:
  -
    type: text
    text: # Piles of content live here

In der entsprechenden PHP-Klasse können beispielsweise Seitenstatistiken errechnet und zurückgegeben werden:

<?php

namespace App\ViewModels;

use Statamic\View\ViewModel;

class ArticleStats extends ViewModel
{
    public function data(): array
    {
        // Combine content blocks
        $html = collect($this->cascade->get('content'))
                ->implode('text', " ");

        // Remove HTML tags
        $content = strip_tags($html);

        // Calculate stats
        $character_count = strlen($content);
        $word_count      = mb_str_word_count($content);
        $read_time       = ceil($word_count / 200);

        return [
            'character_count' => $character_count,
            'word_count'      => $word_count,
            'read_time'       => $read_time
        ];
    }
}

Mit der GraphQL-API, der REST-API, dem Static Site Generator und der Laravel-Integration sind die Möglichkeiten für Entwickler natürlich enorm. Im Vergleich zu den ersten Versionen sind jedoch auch die Anforderungen an Entwickler gestiegen. Das spiegelt sich leider auch in der aktuellen Dokumentation von Statamic wider, die einen einfachen und schnellen Einstieg in die Entwicklung mit Statamic vermissen lässt. Stattdessen wird man von den vielen Möglichkeiten etwas erschlagen, selbst, wenn man Erfahrungen mit früheren Versionen hat.

Statamic für Nicht-Entwickler

Schon die Installations-Routine von Statamic über die Konsole macht klar, dass sich Statamic ausschließlich an Entwickler und Web-Agenturen richtet. Eine Nutzung durch Nicht-Entwickler wie bei WordPress ist nicht vorgesehen. Für Code-Einsteiger oder auch Liebhaber des schlanken Codes ist Statamic mit der Laravel-Integration und den etwas erschlagenden Möglichkeiten deutlich überkomplex.

Kosten

Statamic hat sich in den letzten Jahren zunehmen als Flat-File-CMS im Premium-Segment etabliert. Nach zahlreichen Preis-Umstellungen und Experimenten mit Lizenz-Modellen staffeln sich die Preise für Version 5 wie folgt:

  • 0,- US-Dollar für eine private Seite mit einem Admin-Nutzer.
  • 275,- US-Dollar pro Lizenz. Die Lizenz gilt für eine Live-Seite mit kostenfreien Updates für ein Jahr.
  • 7,- US-Dollar pro Monat und Seite für die Statamic-Platform bei einem Minimum von 25 Webseiten.
  • 1250,- US-Dollar für fünf Lizenzen sowie einen Discount von 25 Prozent pro zusätzlicher Lizenz im ersten Jahr.

Statamic Platform ist ein neues Pricing-Model, dass im Jahr 2023 eingeführt wurde. Es richtet sich an Organisationen und Unternehmen, die viele Statamic-Projekte aufsetzen oder Statamic als SaaS-Lösung anbieten wollen.

Einsatzfelder für Statamic

Statamic richtet sich vornehmlich an Entwickler und Web-Agenturen, die ihr Portfolio um ein modernes und flexibles CMS ohne Datenbank erweitern wollen. Statamic bietet sich auch als datenbanklose Alternative zu dem beliebten Craft CMS an, denn beide Systeme sind aus dem Umfeld von Expression Engine entstanden und folgen ähnlichen Prinzipien. Kunden wie der Spiegel, Disney oder Asana zeigen, dass sich Statamic inzwischen zu einem sehr reifen System gemausert hat und auch komplexe Anforderungen gut meistert. Schwerpunkt dürfte jedoch weiterhin der kleinere Mittelstand sein.

Aufgrund des großen Code-Umfangs und der Ausrichtung als professionelles Laravel-CMS eignet sich Statamic nicht mehr wirklich für private Projekte, da es schlicht überdimensioniert wirkt und tiefe Entwickler-Kenntnisse erfordert.

Vorteile und Nachteile von Statamic

Beim Testen von Statamic haben uns die folgenden Punkte besonders gefallen:

  • Sehr gute und eingängige Nutzeroberfläche.
  • Tolle Seiten-Preview mit Split-Screen.
  • Sehr ausgreifter Formular-Builder für Blueprints und Fieldsets.
  • Tolle Möglichkeiten für Entwickler mit GraphQL, REST-API und Static Site Generator.
  • Sehr gut als Agentur- und Dienstleister-CMS im Laravel-Umfeld geeignet.

Was uns beim Testen als mögliche Nachteile aufgefallen ist:

  • Lokale Installation im Schnellversuch gescheitert.
  • Sehr schwergewichtig mit enormen Code-Umfang.
  • Dokumentation bietet keinen Schnell-Einstieg für Entwickler mehr.
  • Wirkt für einfache und schnelle Web-Projekte inzwischen deutlich überkomplex.