Commerce

Statamic — das Laravel CMS

Martin Welte

Senior Developer

Einführung ✨

Seit Laravels erstem release 2011 hat es sich zum dominanten php Framework gemausert. Mittlerweile wurden diverse CMS Systeme darauf aufgebaut. Höchste Zeit sich ein solches CMS System genauer anzuschauen. In diesem Beitrag wird das CMS Statamic genauer unter die Lupe genommen. Womit glänzt das CMS, was sind seine Use-cases und was sind seine Schwächen.


Warum Statamic


Statamic ist auf dem Laravel Kern aufgebaut. Das bedeutet die geballte Power einer Laravel Applikation in Kombination mit deinem CMS. Laravels Ansatz war immer schon seinen Usern viele Freiheiten zu lassen und sämtliche Funktionalitäten so voneinander zu entkoppeln, dass sie leicht ausgetauscht werden können. Dieser Grundgedanke von Flexibilität wurde in statamic übernommen. Sie wollen ihre eigene Template Engine verwenden? Können Sie. Sie wollen es als Headless CMS verwenden? Dem steht nichts im Weg.

Die Business Perspektive

Gerade weil statamic auf Laravel aufbaut ist es leicht dafür Entwickler zu finden. Im Vergleich zu anderen CMS Systemen ist es auch recht günstig zu betreiben. Initial $259, für jedes weitere Jahr $59 für Updates. Wenn man die inkludierten Funktionalitäten betrachtet, die bei einem Vergleichbaren Produkt durch kostenpflichtige Erweiterungen gewährleistet würde. Das Backend interface ist einfach zu benutzen und zu verstehen, speziell für nicht-technische Nutzer.

Out of the box kommt statamic mit Unterstüzung eines user management für Rollen und Gruppen, einem Form Generator, einem eigenen Generator für die Inhalte und Datenstrukturen. Navigationen eine Mediathek und Taxonomien sind ebenfalls native Funktionen. Es Unterstützt außerdem Revisionen und Historien. Mehrsprachigkeit ist ebenfalls kein Problem für das CMS.

Die Entwickler Perspektive

Als Entwickler hat man die geballte Power von Laravel an den Fingerspitzen. Man kann Laravels Router, Modelle, Controller und REST Api direkt nutzen. Wenn man die Integrität seiner Applikation gewährleisten will, kann man automatisierte Tests mit wenig Aufwand schreiben, wie man es aus Laravel gewohnt ist. Statamic liefert außerdem eine umfassende CLI die das Automatisieren von Aufgaben wie Exporte oder Interaktionen mit externen Plattformen.

Installation

Um Statamic zu installieren kann man einfach der Dokumentation folgen

https://statamic.dev/quick-start-guide#install-statamic

TL;DR

Option 1:
Statamic ist eine Dependency in Laravel. Man kann es wie jede andere Dependency in Laravel installieren, und muss nur ein autoload script im composer.json file hinzufügen.

Option 2:
Die statamic CLI als globale composer dependency installieren über “composer global require statamic/cli” und danach “statamic new $project_name” ausführen

Das Positive

Statamic anpassen ist verblüffend einfach und unglaublich schnell. Man hat es sehr flott installiert und aufgesetzt. Wenn man Laravel gewohnt ist, wird das Hinzufügen von Ruten und Logik kein Hindernis darstellen. Man kann Laravels Eloquent ORM, die artisan console, und tinker verwenden – abgekürzt alles was Laravel Entwicklung so großartig macht. Statamic kommt außerdem direkt mit einer REST Api für den gesamten Inhalt von statamic. Das heißt man kann statamic auch direkt als Headless CMS verwenden.

Das Seltsame

Als Entwickler kommt einem der Gedanken an ein CMS System ohne rationale Datenbank seltsam vor. Statamic speichert die Inhalte als Datein im Filesystem, und aggregiert diese Daten dann in einem index basierten speicher system im Laravel Cache. Laravel lässt einem freie die freie Wahl des Cache Drivers. Sie wollen Redis verwenden? Kein Problem. Sie erahnen wahrscheinlich, worauf ich hinauswill. Der meiste Inhalt wird dann über Redis ausgeliefert. Gleich wie man es in Verbindung mit einer rationalen Datenbank machen würde. Der Punkt ist – wenn der Großteil der Inhalte sowieso direkt über den Cache ausgeliefert wird – macht es keinen großen Unterschied was für eine Speicherlösung verwendet wird. Außerdem können Files direkt über Git nachverfolgt werden. Das ermöglichet direkt eine Versionskontrolle des gesamten Inhaltes.

Eine weitere Eigenheit meiner Meinung nach ist die Templating Sprache Antlers die eine Art erweitertes Twig ist. Zugegeben — sie ist einfach zu lesen und übernimmt einige der aufwändigen Arbeiten des täglichen Geschäfts. Aber mir wird immer noch schlecht, wenn ich sie sehe. Das Hauptproblem, dass ich mit dem Ansatz habe, ist dass die Templates viel der eigentlichen Business Logik übernehmen. Und damit unweigerlich zu einer Verschmelzung von Logik und Darstellung führen.

Immer noch nicht überzeigt? Schön, verwende doch eine rationale Datenbank (für das User Model wird das bereits in der Standardversion unterstützt). Für alles andere werden Sie eigene Datenbank Migrationen schreiben müssen, um die sonstigen Files mit den Spalten einer rationalen Datenbank synchron zu halten. Sie können auch wie gewohnt die Eloquent Driver und Modelle benutzen, gleich wie es in Laravel funktionieren würde.

Fazit



Statamic ist ein großartiges CMS das vor allem durch seine einfache Integration in Laravel glänzt. Der vielversprechendste use-case für die Anwendung ist sicherlich die Ergänzung einer Web Applikation mit CMS Inhalten. Verwendet man ansonsten im Laravel Kontext doch oft externe CMS Systeme und bettet die Inhalte derer in die Applikation ein. Statamic macht das Verwenden von mehreren Systemen daher obsolet und minimiert damit die Komplexität. 

👀 Weiterlesen, weiterkommen.