Concrete CMS: Wenn WordPress nicht mehr ausreicht und alles in Laravel von Grund auf zu schreiben sich zu viel anfühlt
Kennt ihr das Gefühl, wenn ein Kunde eine „einfache Website" anfragt, aber eine Woche voller Überarbeitungen später wird das Projekt zum Monster mit benutzerdefinierten Datentypen, einem komplexen Berechtigungssystem und der Notwendigkeit, Inhalte direkt auf der Seite zu bearbeiten? Ihr öffnet WordPress und erkennt, dass ihr in Plugins ertrinken werdet. Ihr schaut Laravel an und versteht, dass ihr drei Wochen lang ein Admin-Panel schreiben werdet. Irgendwo in der Mitte lebt Concrete CMS – ein Projekt mit langer Geschichte, das versucht, auf zwei Stühlen zu sitzen: Entwicklern Freiheit und Content-Managern Komfort bieten.
Zuvor hieß das Projekt concrete5. Die Umbenennung in Concrete CMS geschah vor ein paar Jahren, was einige Verwirrung in den Repositories verursachte, aber architektonisch ist es immer noch dasselbe solide PHP-Tool.
Was ist es überhaupt
Concrete CMS ist ein Open-Source Content-Management-System, geschrieben in PHP. Um es unverblümt zu sagen: Es ist ein CMS für diejenigen, die objektorientierte Programmierung lieben, aber keine Zeit mit grundlegenden Dingen wie Authentifizierung oder Dateiverwaltung verbringen möchten.
Das Hauptfeature, das die Leute lieben (oder hassen, je nach Perspektive), ist die „Bearbeitung im Kontext". Ihr geht auf die Website, klickt auf den „Bearbeiten"-Button und ändert Blöcke direkt in der Frontend-Oberfläche. Für Kunden ist es Magie. Für Entwickler ist es eine Architektur, die auf Blöcken und Seiten aufbaut.
Was kann einen Entwickler begeistern
Im Gegensatz zu vielen Systemen, die versuchen, „nur eine Blog-Engine" zu sein, wurde Concrete von Anfang an als Anwendungs-Framework konzipiert.
Flexible Blockverwaltung
In Concrete besteht alles aus Blöcken. Ihr möchtet einen neuen Inhaltstyp erstellen? Ihr erstellt einen Ordner mit einem Controller und ein paar View-Dateien. Das System nimmt sie automatisch auf, erstellt die notwendigen Tabellen in der DB und fügt sie zur Drag-and-Drop-Oberfläche hinzu. Das ist bequemer als das Arbeiten mit Advanced Custom Fields in anderen Systemen.
Integriertes Berechtigungsmanagement
Es gibt hier nicht nur „Admin" und „Redakteur". Ihr könnt den Zugriff auf einen bestimmten Block auf einer bestimmten Seite für eine bestimmte Benutzergruppe zu einer bestimmten Zeit konfigurieren. Klingt übertrieben, bis ihr die Aufgabe bekommt, ein Unternehmensportal für ein 500-Personen-Unternehmen zu bauen.
Leben auf dem PHP-Stack
Das Projekt nutzt aktiv moderne Standards. Unter der Haube findet ihr Composer für die Abhängigkeitsverwaltung und Symfony-Komponenten. Das bedeutet, ihr müsst keinen „speziellen PHP-Dialekt" lernen, wie es oft bei Legacy-Systemen der Fall ist.
So deployt ihr das Projekt lokal
Die README des Projekts ist recht knapp gehalten, was tatsächlich erfrischend ist – kein unnötiges Gerede. Die Installation ist klassisch für ein PHP-Projekt.
Zuerst klont ihr das Repository:
git clone https://github.com/concretecms/concretecms.git
cd concretecms/
Dann zieht ihr die Abhängigkeiten via Composer herein:
composer install
Übrigens, wenn ihr an Docker gewöhnt seid, gibt es in der Community plenty an fertigen Images, obwohl das offizielle Repository die Containerisierungsanweisungen nicht in den Vordergrund stellt. Nach der Installation der Abhängigkeiten braucht ihr einen Webserver (Apache oder Nginx) und eine MySQL-Datenbank.
Technische Nuancen und Vermächtnis
Im Repository ist derzeit der 9.x-Branch aktiv. Das ist wichtig, weil der Übergang von 8.x zu 9.x aufgrund von Interface-Updates und Änderungen an internen Bibliotheken ziemlich schmerzhaft war. Wenn ihr ein Projekt auf einer alten Version geerbt habt, gibt es im Repository separate Branches für 8.5.x und sogar 5.7.x.
Interessanter Punkt: Concrete CMS schämt sich nicht für sein Alter. Das Repository existiert seit 2014, und das System selbst ist noch älter. Das bietet Stabilität, aber manchmal könnt ihr auf Lösungen im Code stoßen, die nach heutigen Maßstäben heavyweight wirken. Andererseits hat das Projekt fast 500 offene Issues. Das kann einschüchternd sein, aber wenn man genauer hinschaut – dort findet aktive Diskussion über Bugs und neue Features statt, was für Open Source eher ein gutes als ein schlechtes Zeichen ist.
Für welche Aufgaben eignet es sich
Ich würde nicht empfehlen, Concrete CMS für eine kleine Landingpage zu verwenden – ihr würdet mehr Zeit mit der Einrichtung der Umgebung verbringen als mit dem tatsächlichen Bau der Website. Aber in diesen Fällen funktioniert es großartig:
- Komplexe Unternehmenswebsites, bei denen verschiedene Abteilungen Inhalte verwalten.
- Intranets und interne Portale mit Unmengen an Zugriffsberechtigungen.
- Projekte, bei denen es kritisch wichtig ist, dass der Kunde Textänderungen sofort im Design sieht, nicht im Admin-Panel.
Fazit: Solltet ihr es probieren
Wenn ihr die Einschränkungen beliebter CMSs leid seid, aber Symfony CMF euch wie ein übermäßig komplexes Toolkit vorkommt, ist Concrete CMS ein ehrlicher Mittelweg. Es hat eine Lernkurve, und die Dokumentation lässt einen manchmal schwitzen, aber die Flexibilität, die es „out of the box" bietet, macht die investierte Zeit oft wieder wett.
Am besten startet ihr damit, ihre Dokumentation zu erkunden, und wenn etwas schiefgeht – schaut ins Forum. Die Community dort ist nicht so riesig wie die von WordPress, aber sie ist mehr auf Engineering ausgerichtet und reaktionsschneller.
Ähnliche Projekte