Grav CMS Evaluation

Wie schon im vorangegangenen Post erwähnt, bin ich mit der aktuellen Entwicklung von WordPress, meinem langjährigen Favoriten, nicht mehr uneingeschränkt einverstanden (siehe Anmerkungen am Ende des Beitrags), und schaue mich daher in verschiedenen anderen Richtungen um.

Der erste Kandidat den ich genauer unter die Lupe nahm, war ClassicPress, siehe den entsprechenden Blog-Post.

Inzwischen habe ich mich auch mal in der Richtung ‘Flat File CMS’ umgesehen, z.b. GetSimple. Dieses ist zwar nett, aber insgesamt doch zu spartanisch 😊 .
Und ausserdem fehlt ihm eine Wordpress-Import-Funktion (ohne eine solche hat ein Wechsel von vornherein keinen Sinn, der Aufwand wäre einfach zu gross). Zuletzt bin ich dann auf GetGrav gestossen, und das sah dann doch gleich wesentlich moderner und vielversprechender aus:

  • sehr einfache Installation
  • verwendet moderne Techniken: Twig, Markdown, YAML, Symfony, Doctrine Caching.
  • braucht wenig Ressourcen und ist sehr schnell
  • einfache Backups möglich
  • recht umfangreiches Repertoire an Themes und Plugins (aber nicht vergleichbar mit WordPress !)
  • Wordpress Blog Import via Plugin 😊
  • da File-basiert, Versionsverwaltung der Inhalte via git möglich (Ja!)
Also in jedem Fall mal einen Versuch wert.

Der stellte sich dann nun doch als nicht ganz so trivial heraus, wie es zunächst den Anschein hatte.

Da ich für einen Versuch, der dann evtl. doch schnell ins Leere führt, nicht gleich einen kompletten LAMP Server verwenden wollte, hielt ich erstmal Ausschau nach einem passenden Docker Image, das die (relativ geringen) Anforderungen erfüllen sollte.
Die ersten Versuche machte ich daher mit PHP Apache Container. Das funktionierte dann auch relativ schnell, wenn auch diverse PHP Erweiterungen (zip, simplexml…) die nicht im Paket enthalten waren, zuerst per Hand installiert werden mussten.
Der Nachteil dieses Workarounds ist halt, dass nach jedem Docker-Neustart dasselbe nochmal gemacht werden muss.
Nicht besonders elegant, das. Später mehr dazu, hier erstmal noch ein paar Anmerkungen zum eigentlichen Test-Kandidaten Grav:

Hier ist doch einiges anders als von traditionellen CMS gewohnt, was erstmal eine gewisse Lernkurve benötigt, aber es stellen sich dabei auch doch immer wieder ‘Aha’ Effekte ein - die gewohnten, eingefahrenen Wege sind nicht immer die schnellsten und besten. Was mir gut gefallen hat, ist die Installation von Themes und Plugins mittels des Paketmanagers gpm, ebenso die grundsätzliche Konfiguration im Backend.
Und auch die Anpassung von Themes und Plugins via Twig-Templates ist zwar erstmal etwas gewöhnungsbedürftig, wenn man es aber mit dem PHP-HTML Mischmasch der Templates in WordPress oder Contao vergleicht, um eine Grössenordnung logischer 😊 .
Ansonsten erinnert der Aufbau der Themes doch sehr an WordPress, was im Falle einer Migration kein Nachteil ist, so existiert im Grav Theme Repository u.a. auch das Theme Twentyfifteen, das ich hier etwas abgewandelt auch verwende, also ein klarer Pluspunkt für Grav ! (wobei anzumerken ist, dass die Portierung vom Original hier nur rudimentär ist, denn das Grav Theme unterstützt out of the Box keine Submenus, ein klares Manko, das Nacharbeit erfordert…).
Zu den Plugins ist zu sagen, dass wie schon erwähnt, die Installation via gpm (incl. Abhängigkeiten !) deutlich besser gelöst ist, als bei WordPress, dank composer, dem PHP Symfony Paket Manager. Die Qualität bzw. Dokumentation der Plugins selbst, die zum überwiegenden Teil auf GitHub gehostet sind, ist allerdings manchmal etwas zweifelhaft, bei zweien, die ich bisher getestet habe (insbesondere das Wordpress Import Plugin) war erstmal Nacharbeit erforderlich um sie zum Funktionieren zu bringen.
Und zwei weitere (Archiv und Archiv Plus) tun einfach nicht was sie sollen (was auch an der mangelhaften Beschreibung liegen könnte, das muss ich noch genauer untersuchen).
Ansonsten ist es so, dass die Auswahl an Plugins für bestimmte Aufgaben einfach (noch) zu beschränkt ist (so bietet z.B. keine der beiden gefundenen Fotogalerien eine Javascript-Lightbox-Funktion) oder auch gar nicht vorhanden sind (so gibt es zwar ein Google Maps Plugin, aber keines für Open Street Map Karten, ein Kalender / Terminplanungs Plugin ist erst gar keines vorhanden). Damit ergeben sich für meinen Anwendungsfall in erster Linie folgende Knackpunkte:

  • Ordentliche Fotogalerie fehlt – geklärt: Unitegallery kann das.
  • kein (ICS-) Kalender Plugin vorhanden – Fullcalendar.io kann als Ersatz dienen.
  • kein freies Karten-Plugin vorhanden (Google Maps verlangt inzwischen Deposit einer Kreditkarten-Nummer !) – map-marker-leaflet ist Ok.
  • kein ordentlich funktionierendes Blog-Archiv (Nachtrag: fast gelöst..)
  • Theme Submenu funktioniert nicht – etwas do-it-yourself gefragt 😎 - dann tut das auch
Aktuelles Fazit: durchaus vielversprechend, mit guten, sympathischen Ansätzen, aber der Teufel steckt doch noch in vielen Details. Und nein, für Einsteiger in die Web-Entwicklung ist es nicht wirklich gemacht. Ich werde da aber sicher noch einige Zeit dranbleiben, mal sehen wie sich das entwickelt bzw. ob ich da (siehe Knackpunkte, die inzwischen – Mitte März ’19 – fast alle behoben sind) ggf. selber eingreifen will.... (das ist vor Allem immer auch eine Frage der Community - auch ein Punkt, der mich bei WordPress eher abgestossen hat, war die unfreundliche, fast schon arrogante Art des Genehmigungsprozesses bei meinem ersten offiziellen WP Plugin. Ich denke ich werde mal bei den Grav Machern reinschnuppern um zu sehen wie die so ticken).

Und, ach ja, weiter oben hatte ich das etwas umständliche Docker Image erwähnt.
Hier: Grav PHP Apache ist ein von mir genau für die Entwicklung von Grav Webseiten konfiguriertes Docker Image.
Viel Spass damit !

Anmerkungen zur aktuellen Entwicklung von WordPress:

  • Im Zuge der Entwicklung von Gutenberg geht hier alles in Richtung React.
  • React ist schon allein dadurch, dass es ein Facebook Projekt ist, unsympathisch.
  • Aber schlimmer noch: es ist ein klassisches PITA Tool für Entwickler, das ist jedenfalls meine Meinung, ich habs 3 Tage lang ausprobiert 😊 .
  • (wer nicht weiss, was PITA ist, Google fragen ...)

Related Articles