CMSstash

GRAV: Das Open Source Flat-File-CMS

Autor: Sebastian Schürmanns

Grav gehört zu den beliebtesten Open Source Systemen aus der Familie der Flat-File-CMS. Grav bietet einen großen Feature-Umfang, mit dem sich die unterschiedlichsten Seiten-Typen realisieren lassen: Angefangen von Blogs über Corporate Websites bis hin zu flexiblen One-Pagern mit Hilfe der Grav-eigenen Modular-Pages ist alles möglich. Durch den Feature-Reichtum ist die Bedienung von Grav allerdings nicht immer ganz selbsterklärend.

Screenshot der Grav-Website

Grav wurde von dem Rocket-Theme-Chef und Joomla-Core-Entwickler Andy Miller gegründet und der Öffentlichkeit im Sommer 2014 vorgestellt. Das System erreichte in der Open Source Community sehr schnell eine hohe Popularität, wohl auch, weil es als erste echte Open-Source-Alternative zu kommerziellen Systemen wie Kirby oder Statamic wahrgenommen wurde. Die hohe Popularität von Grav hat den kommerziellen Systemen allerdings nicht das Wasser abgegraben, was nicht zuletzt für deren hohe Qualität spricht.

Job-Angebote für CMS-Experten

CMS-Experten wie Web-Entwickler, Produkt-Owner oder Projekt-Manager sind heiß begehrt. Daher bietet CMSstash in Zukunft ein Job-Board an. Job-Board ansehen

Der ursprüngliche Plan eines Freemium-Models mit kostenpflichtigen Plugins wurde nie realisiert. Stattdessen bietet Grav mit über 100 Themes und weit über 200 Plugins einen vergleichsweise großen Kosmos and kostenfreien Erweiterungen an. Grav wird kontinuierlich weiterentwickelt und steht derzeit in der Version 1.5 bzw. 1.6 Beta zum Download zur Verfügung.

Grav für Content Manager

Grav bietet zwei verschiedene Versionen zum Download an: Eine Version mit einem integrierten Admin-Dashboard und eine Version ohne Dashboard. Grav kann also auch ohne Administrationsoberfläche als Publishing-Tool für Markdown-Files genutzt werden, ein Nutzungs-Szenario, das sich eher an Entwickler richtet.

Das ursprünglich recht dunkel geratene Dashboard ist inzwischen zum Glück aufgehellt worden. Geblieben ist allerdings der etwas erschlagende Feature-Reichtum. Mit dem Dashboard richtet sich Grav eher an technik-affine Administratoren und Webmaster, während der unerfahrene Autor hin und wieder Schwierigkeiten haben dürfte, den richtigen Button zu finden. Wenn einem das bestehende Dashboard überhaupt nicht zusagt, dann kann man es über die vielen Konfigurations-Möglichkeiten an seine Bedürfnisse anpassen.

Screenshot das Admin-Panels von Grav

Unter dem Menü-Punkt "Page" werden die Inhalte der Webseite aufgelistet. Dabei unterscheidet Grav nicht zwischen statischen oder dynamischen Inhalten. Stattdessen kann der Autor den Seiten-Typ durch die Auswahl eines Templates bestimmen. Die Eingabefelder für die Inhalte können bei Grav, ähnlich wie bei den anderen High-Level-Systemen im Flat-File-Bereich, vom Entwickler an die individuellen Bedürfnisse der Webseite angepasst werden.

Für die Content-Erstellung bietet Grav einen Markdown-Editor mit einem Teil-WISYWIG-Modus an. Die Markdown-Syntax bleibt im Editor erhalten, einige Formate wie Überschriften oder Fettungen werden jedoch direkt visuell umgesetzt.

Das Bild-Management von Grav ist etwas eigenwillig: Mit dem Bild-Button des Editors öffnet sich keine visuelle Bild-Auswahl, sondern es wird lediglich die Markdown-Syntax für ein Bild in den Editor integriert. Für die meisten Autoren dürfte das wenig hilfreich sein, da die fehlende Bild-Url in der Regel nicht bekannt ist. Man kann Bilder jedoch außerhalb des Markdown-Editors per Drag & Drop hochladen und dann auch per Drag & Drop in den Editor verschieben. Im Editor wird dann die Markdown-Syntax für das Bild inklusive der URL zum Bild angezeigt. Fraglich bleibt, ob weniger technisch affine Autoren mit diesem Workflow glücklich werden. Hinzu kommt, dass Meta-Angaben für Bilder nicht ohne weiteres über die Autoren-Oberfläche editiert werden können, dadurch stößt man bei Konzepten wie Slideshows mit Bild-Unterschriften an die Grenzen des Systems.

Sehr spannend ist dagegen das Konzept der Modular Pages von Grav, mit dem sich komplexe One-Pager umsetzen lassen. Die One-Pager setzen sich dabei aus beliebig vielen Abschnitten zusammen, die im Autoren-Dashboard als separate Sub-Pages editiert werden können. Inzwischen hat Grav auch eine Sortierung dieser Abschnitte über die Administrations-Oberfläche ermöglicht, allerdings ist die Handhabung etwas umständlich.

Keine Frage, Grav ist sehr flexible und bietet Administratoren und Autoren einen sehr großen Feature-Reichtum an. Tags, Multi-Language-Features, Multi-Site-Fähigkeit - das alles ist mit dem System möglich. Allerdings sollte man als Entwickler vorher prüfen, ob Grav die Umsetzung des Webseiten-Konzepts mit einem akzeptablen Autoren-Workflow ermöglicht. Denn Grav orientiert sich insgesamt bei seinen User-Interfaces eher an den Bedürfnissen von Administratoren und Entwicklern. Für die Zielgruppe der eher unerfahreneren Autoren sollte man bei der Auswahl eines Flat-File-Systems daher auch andere Optionen mit einbeziehen.

Grav für Entwickler

Grav stellt nur minimale Anforderungen an das System. Es läuft auf Web-Servern wie Apache, Nginx, LiteSpeed, Lightly oder IIS mit PHP ab Version 5.6.3. Der eigene Technologie-Stack ist recht modern und umfangreich. Grav verwendet:

Wie bei den meisten Flat-File-CMS ist die Installation von Grav sehr einfach. Man lädt die System-Dateien herunter und geht zu lokalhost oder im Falle einer Live-Installation zu deiner-webseite.com. Sofern man die Version mit der Administrationsoberfläche heruntergeladen hat, erscheint ein Formular zur Erst-Einrichtung eines Admin-Users.

Bei der Erstellung eines neuen Themes für Grav arbeitet man hauptsächlich mit Twig Templates und YAML-Konfigurations-Dateien. Wie bei den meisten Flat-File-Systemen kommt es auf das Zusammenspiel zwischen den Templates, den Konfigurations-Dateien und den Inhalten aus der Markdown an:

Die Definition eines Titel-Feldes und eines Markdown-Editors für das Autoren-Dashboard sieht in der YAML-Datei etwa so aus:

fields:
  header.title:
    type: text
    label: Headline
  content:
    type: markdown
    validate:
      type: textarea

Wählt der Autor bei der Erstellung einer Seite das Template "Default" aus, dann werden die Meta-Angaben wie üblich im Frontmatter der Markdown-Datei gespeichert. Unter dem Frontmatter folgen die Inhalte im Markdown-Format:

---
title: My page
---
# This is a headline in markdown
This is some text in markdown. There are some formattings like **bold** or even a [Link to a website](http://cmsstash.com).

Im Template "default.html.twig" stehen sämtliche Inhalte als "page"-Objekt zu Verfügung und können vom Entwickler mit der typischen Twig-Syntax ausgegeben werden:

{% block content %}
    <h1>{{ page.header.title }}</h1>
    {{ page.content }}
{% endblock %}

Vom Prinzip her funktionieren die meisten modernen Flat-File-Systeme nach diesem Muster. Verglichen mit anderen Flat-File-Systemen ist Grav etwas komplexer und vielleicht auch verwirrender für Einsteiger. Daher sollte man gerade bei Grav die Dokumentation sehr aufmerksam lesen, bevor man in die Entwicklung einsteigt. Hat man die Funktionsweise einmal begriffen, ist die Arbeit mit Grav sehr flexibel und leicht.

Das Plugin-System von Grav baut auf dem Event-Dispatcher von Symfony auf, der weit verbreitet ist und vielen Plugin-Entwicklern bekannt sein dürfte. WordPress-Entwickler werden sich etwas umgewöhnen müssen, allerdings basiert auch das Plugin-System von WordPress auf Events, sodass es einige Wiedererkennungs-Merkmale gibt. Der schnellste Weg zur Plugin-Entwicklung dürfte über das kurze Plugin-Tutorial in der Grav-Dokumentation führen.

Grav für Nicht-Entwickler

Grav ist einfach zu installieren, es bietet eine gute Auswahl an Ressourcen an und kann über die Administrations-Oberfläche sehr weitreichend konfiguriert werden. Von daher können auch Nicht-Entwickler dem System eine Chance geben. Dennoch sollte man kein Ready-To-Go-Konzept analog zu WordPress erwarten. Was man erwarten kann sind über 100 Themes, mehr als 200 Plugins und einige Dutzend "Skeletons", die als fertige Lösungen für diverse Anwendungsfälle genutzt werden können. Die Bandbreite ist dabei recht hoch: Von der Business-Webseite über Portfolio-Seiten, Landing-Pages bis hin zu Blogs sind viele Standard-Fälle abgedeckt. Die Administrations-Oberfläche ist allerdings recht komplex und zum Teil mit technischen Fachbegriffen bestückt, sodass man eine gewisse technische Affinität haben sollte, wenn man mit Grav ohne Hilfe eines Entwicklers loslegen will.

Empfehlung: Wann eignet sich Grav?

Flat-File-CMS sind generell sehr gut für alle Arten von kleineren Webseiten geeignet, seien es Landing-Pages, Portfolio-Seiten oder kleine Business-Auftritte. Durch die Skeletons ist Grav auch für viele andere Anwendungsfälle geeignet, beispielsweise für Verzeichnisse, Dokumentationen und sogar für kleine E-Commerce-Seiten. Besonders sinnvoll ist der Einsatz von Grav bei One-Pagern.

Allerdings kann man mit Grav auch an Grenzen stoßen, beispielsweise beim Umgang mit Bildern und Meta-Daten für Medien. Auch das Konzept von Blocks oder Widgets ist Grav unbekannt, editierbare Sidebars müssen daher über versteckte Seiten realisiert werden. In jedem Fall sollte man vor dem Einsatz von Grav prüfen, ob das jeweilige Seiten-Konzept mit akzeptablen und verständlichen Workflows für die Autoren realisierbar ist. Grundsätzlich gehört die Usability für technisch unerfahrenere Autoren nicht unbedingt zu den Stärken von Grav. Die Flexibilität des Systems und die weitreichenden Konfigurationsmöglichkeiten sind dagegen beeindruckend.

Auch andere Experten lesen gerne gute Inhalte und freuen sich, wenn Du diesen Artikel zum Beispiel über Twitter teilst. Auf Twitter gibt es außerdem von @CMSstash tägliche Updates.

Zuletzt aktualisert: 17.10.2018