CMS Statamic

Das CMS Statamic kommt in den meisten unserer neueren Webprojekten zum Einsatz. Es überzeugt uns – und dieser Beitrag zeigt weshalb. Er erklärt aber auch kurz, was Statamic überhaupt ist, wie es aufgebaut ist und vergleicht es mit unserem bisher favorisierten CMS WordPress.

Captns Konzept und Gestaltung: Blog Beitrag CMS Statamic

Die Idee dahinter

Statamic ist ein Content Management System – kurz ein CMS. Es ist hauptsächlich dafür da, Inhalte einer Webseite ändern zu können, ohne sich dabei mit dem Code der Webseite herumschlagen zu müssen. Das weltweit bei weitem am meisten verbreitete CMS ist WordPress – Statamic ist eine von vielen Alternativen dazu.

Im Jahr 2012 veröffentlichte Jack McDade die erste Version von Statamic mit der Idee, ein besonders flexibles und innovatives CMS zu entwickeln. Mit einem komplett anderen Ansatz und Aufbau sollte es diverse Nachteile von WordPress und Consorte lösen können.

Im Gegensatz zu WordPress richtet sich Statamic bewusst an Entwickler:innen. Das heisst, man braucht gewisse Vorkenntnisse und muss sich mit dem Code und dem Aufbau von Statamic auseinandersetzen. Dafür hat man viel mehr Möglichkeiten und behält stets einen gut strukturierten Code, was besonders bei zukünftigen Anpassungen ein grosser Vorteil ist.

Nachfolgend sind einige der wichtigsten Punkte beschrieben, die aus unserer Sicht für Statamic sprechen .

Solide Grundlage

Statamic baut auf dem PHP-Framework Laravel auf, welches bei der Entwicklung von vielen Webapplikationen als Grundlage verwendet wird. Auch wir vertrauen Laravel für komplexe Webapplikationen und kennen das Framework. Laravel besticht mit seiner Flexibilität und der kontinuierlichen Weiterentwicklung durch eine sehr grosse Community. Die Community macht es zum derzeit beliebtesten PHP-Framework im Bereich Web. Nicht zuletzt deshalb ist Statamic so erfolgreich. Denn es baut auf einem bewährten System auf und gewinnt dank der Community und der vollständigen Integration ins Laravel-Ökosystem das Interesse zusätzlicher Entwickler:innen.

Auch weitere oft verwendete Tools können innerhalb einer Statamic-Webseite verwendet werden. So sind das JavaScript-Framework Vue.js und das CSS-Framework TailwindCSS bereits integriert.

Die Contentverwaltung

Die Contentverwaltung einer Statamic-Webseite wird über das Control Panel abgewickelt. Dieses kann gezielt an die auf der Webseite verwendeten Inhalte angepasst werden. Hier unterscheidet sich Statamic wesentlich von WordPress. Da nicht benötigtes einfach weggelassen werden kann, bleibt es besonders übersichtlich.

In Statamic modelliert man ausgehend vom Inhalt des Projektes das Userinterface. Dazu bietet Statamic Blueprints, die einen Inhaltstyp definieren. Über einen Editor (oder per Code) lassen sich die Eigenschaften eines Inhaltstyps zusammenklicken und auch die Eingabemaske designen. Dies ist sehr einfach und kann zuverlässig in Statamic erledigt werden.

Damit Inhalte möglichst passgenau den Bedürfnissen auf der Webseite angepasst werden, stehen rund 40 Fieldtypes zur Verfügung. Diese können beliebig kombiniert und benannt werden.

Beispiele für Fieldtypes sind:

  • Datum
  • Textfelder (mehr oder weniger komplexe)
  • Farbwähler
  • Listen
  • Checkboxen
  • Bildupload
  • Replicator
  • Taxonomien
Captns Konzept und Gestaltung: Blog Beitrag Statamic CMS

Welche Formatierungs-Elemente braucht es? In Textfeldern mit dem Fieldtype Bard kann man gezielt festlegen, welche Formatierungs-Elemente zur Verfügung stehen sollen und welche es beispielsweise für den Einleitungstext nicht braucht.

Captns Konzept und Gestaltung: Blog Beitrag Statamic CMS

Ein anderer Fieldtype ist der Farbwähler, den man einbauen kann, falls für die einzelnen Seiten zum Beispiel unterschiedliche Hintergrundfarben möglich sein sollten. Der vom Farbwähler generierte Hexadezimal-Wert kann gezielt in den Code der Webseite eingebaut werden.

Fieldtypes sind keine Erfindung von Statamic, sind in Statamic aber besonders ausgereift und einfach zu konfigurieren.

Statamic ist besonders für Entwickler:innen interessant, die schnell ein spezialisiertes Userinterface erschaffen wollen. Die Definition der Interfaces wird in Yaml gespeichert und kann einfach zwischen einzelnen Projekten geteilt werden.

Unsere Entwickler:innen sollten sich auf das Frontend konzentrieren können und möglichst schnell die Grundstruktur des Projekts konfiguriert haben. Sie sollen nicht gegen das CMS kämpfen, weil sie hier ein Feld deaktivieren und dort eine Option hinzufügen müssen, sondern spezifische Lösungen für unsere Kund:innen finden.

Verzicht auf die Datenbank

Die meisten Webseiten sind auf eine Datenbank angewiesen. Diese besteht aus Tabellen und beinhaltet sämtliche Verknüpfungen und Texte, die auf einer Webseite verwendet werden. Datenbanken versprechen eine generelle Abfragesprache und Geschwindigkeit beim finden von Informationen. Oftmals sind diese jedoch unübersichtlich und gross. So nutzt beispielsweise auch WordPress zur Speicherung von Informationen eine Datenbank.

Statamic ist ein Flat-File CMS, was heisst, dass es standardmässig ohne Datenbank auskommt. Alle Inhalte sind stattdessen in Dateien innerhalb des Projektordners hinterlegt. Dies bringt vor allem folgende Vorteile mit sich:

  • die Daten sind viel einfacher zu verwalten, komprimieren und backupen.
  • die Daten sind in GIT integriert, was Version Controlling ermöglicht. Mit der richtigen Konfiguration kann man so jederzeit auf einen früheren Zeitpunkt der Webseite und deren Inhalte zurückgreifen. Für Entwickler vereinfacht dies den Aufbau einer aktuellen Entwicklungsumgebung ungemein.
  • dank der fehlenden Datenbank schliesst sich eine wichtige Sicherheitslücke, da die meisten Webseiten über die Datenbank gehacked werden (siehe SQL Injection).

Der einzige Schwachpunkt von Flat-File ist die Performance bei (sehr) grossen Datenmengen. Eine Datenbank ist besonders dann eine gute Lösung, wenn grosse Datenmengen verarbeitet werden müssen. Die grüssten von uns verwalteten Webseiten bestehen aus ein paar tausend Artikeln. Dies wäre für Statamic noch kein grosses Problem.

Sollten wir trotzdem mal mehr Daten verwalten, dann ist Statamic auch hier flexibel. Man kann Statamic auch mit einer Datenbank koppeln. Dabei können Datenbanksysteme wie z.B. MySQL, MongoDB oder ElasticSearch zum Einsatz kommen. Ein gutes Beispiel ist die Webseite vom Medienhaus Spiegel, welche im Jahr 2017 mitsamt der immensen Datenmenge neu auf Statamic aufgebaut wurde. Da für die Datenverarbeitung dieser Datenmenge Flat-File keine Option ist, kam ElasticSearch zum Einsatz. Jack McDade schildert das Spiegel-Abenteuer im Statamic-Blog in zwei spannend geschriebenen Beiträgen (Part 1 und Part 2).

Kaum Plugins – weniger Updates

WordPress-Webseiten die 10 Plugins und mehr verwenden sind die Regel. Und dank der immensen Anzahl an WordPress-Webseiten weltweit gibt es auch für jede erdenkliche Aufgabe ein passendes Plugin dazu. Plugins erweitern ein System, bringen aber auch immer Aufwand mit sich. Sie müssen aktualisiert und meist doch noch an die Bedürfnisse der Kunden angepasst werden. Kommt hinzu, dass der Programmiercode der Plugins nicht einheitlich ist.

Aufgrund der konfigurierbaren Struktur ist Statamic auf viel weniger Plugins angewiesen. Will man beispielweise Events darstellen, dann erstellt man einen Blueprint für Events – that’s it. Plugins braucht es somit nur noch selten, was weniger Updates (und eine Sicherheitslücke weniger) zur Folge hat. Falls man dennoch eines braucht, gibt es einen Store auf der Statamic-Webseite mit qualitativ hochstehenden Plugins.

Schlusswort

Im Artikel haben wir einige Punkte erwähnt, weshalb wir oft Statamic in unseren Webprojekten verwenden – und es gibt noch viele weitere. Man kann aber nicht abschliessend sagen, dass es besser ist als WordPress, Craft CMS oder andere Systeme. Denn Möglichkeiten, wie ein Projekt umgesetzt werden kann, gibt es meist verschiedene. Wir konzentrieren und spezialisieren uns derzeit auf Statamic, was aber nicht heisst, dass wir nicht auch weitere Entwicklungen verfolgen.


Einige Projekte die wir mit Statamic umgesetzt haben: