Eine Website zu programmieren und sie zu betreiben sind zwei völlig verschiedene Herausforderungen. Nur in Ausnahmefällen wird der Betreiber auch der Programmierer sein. Alle CMS wurden natürlich irgendwann einmal von Programmierern geschaffen. Hat jemand ein System entwickelt oder wendet jemand ein System über viele Jahre hinweg an, bildet sich im Laufe der Zeit eine Art „Betriebsblindheit“. Auch nur die Möglichkeit, dass jemand damit nicht so recht umgehen kann oder will, wird komplett negiert, bis hin zur Aussage „wenn jemand mein System nicht zu schätzen weiß, fehlt ihm sehr wahrscheinlich die nötige fachliche Kompetenz“. Dass solche „Argumente“ nicht überzeugen können, sollte selbst demjenigen klar sein, der ein solches Statement von sich gibt, wenn er nur ein wenig darüber nachdenkt, wie er selbst seine Produkte auswählt.
Darüber hinaus existieren am Markt Lösungen, die sich hauptsächlich an den DIY Markt richten. Überlicherweise starten solche Sites als Blog mit ein paar zusätzlichen statischen Seiten. Im Laufe der Zeit kommen dann mehr und mehr Plugins zum Einsatz, bis das Gesamt-System schließlich auseinander fällt, weil es nicht mehr wartbar geworden ist. concrete5 geht hier einen anderen Weg. Obwohl es möglich ist, in wenigen Stunden ein einfaches Blog oder eine einfache Firmen-Website mit concrete5 aufzusetzen, steht professionellen Entwickler ein flexibles und robustes Framework zur Verfügung, mit dem komplizierte Web-Applikationen auch nachträglich noch verwirklicht werden können. Der Fokus liegt in beiden Fällen auf der einfachen Anwendbarkeit seitens des Kunden. Er kann sich ausschließlich auf den Inhalt konzentrieren.
Architektur
Concrete5-Code basiert auf der Model-View-Controller Architektur und einem objekt-orientierten Paradigma. Integrierte Core-Features sind unter anderem Server-Caching, Entwickler-API, Benutzer-Registrierung und -Anmeldung, Versions-Kontrolle und Suchmaschinen-Optimierung. Die Eingabe von Inhalt erfolgt kontext-orientiert, nach Authentifizierung direkt auf der Webseite, ohne Verwendung eines klassischen Backends. Für komplexere Aufgaben ist das Dashboard vorgesehen. Websites, die unter concrete5 laufen können mit der concrete5 Website verbunden werden und dadurch automatische Updates der Core-Software erhalten. Concrete5 unterliegt der MIT Lizenz.
Blöcke und Attribute
Blöcke folgen einer losen Umsetzung des MVC Prinzips. Sie sind die kleinste visuelle Einheit auf einer Webseite. Jedem Block wird ein bestimmter Typ zugewiesen (Fotos, Text, Filme, Navigationselemente usw.) und es sind somit nur Felder auszufüllen, die für den entsprechenden Inhalt auch relevant sind. Ein Google-Map Block benötigt beispielsweise nur die Koordinaten oder die Adresse, eine Überschrift und den initialen Zoomlevel. Es können selbstverständlich eigene Blöcke geschrieben werden, die auch eigene Datenbankfelder haben können. Eine Reihe von fertigen Blöcken sind bereits nach der Installation vorhanden. Entsprechen sie nicht vollständig den Anforderungen des Entwicklers, können sie aus dem Core-Kontext in den Benutzer-Kontext kopiert und anschließend beliebig verändert werden. Das System verwendet dann automatisch nicht mehr den ursprünglichen System-Block. Durch dieses Prinzip ist es nahezu ausgeschlossen, dass nach einem Upgrade etwas nicht mehr funktioniert.
Attribute werden dazu verwendet, bestimmte Merkmale von Inhaltselementen, Seiten, Benutzern oder Dateien festzulegen. Während Blöcke die Daten selbst repräsentieren, kann mit Attributen z.B. festgelegt werden, wer und unter welchen Umständen diese Daten angezeigt bekommt. Vordefinierte Seiten-Attribute sind z.B. die Meta-Daten (Titel, Beschreibung und Stichworte), „nicht in Menüs anzeigen“ oder „vom Suchindex ausschließen“. Es können beliebig viele benutzerdefinierte Attribute hinzugefügt und miteinander verknüpft werden.
Add-Ons und Themes
Beides können von einem Repository, Marketplace genannt, herunter geladen werden. Dabei ist gewährleistet, dass die angebotenen Add-Ons oder Themes auch wirklich funktionieren. Jeder darf dort zwar seine eigenen Produkte hoch laden, vor Veröffentlichung werden sie jedoch auf Funktion, Qualität und Einhalten der Coding Guidelines überprüft. Nicht alles (aber doch recht vieles) ist kostenlos auf diesem Marktplatz. Das sehe ich aber eher als Vorteil. Die an concrete5 Add-Ons und Themes gestellten Anforderungen sind recht hoch, und der Revisionsprozess nimmt eine ziemlich lange Zeit in Anspruch. So sind „Schnellschüsse“ und Erweiterungen die letztlich nur dazu dienen, sich nach Installation mit dem Autor in Verbindung setzen zu müssen und ihn dann letztlich doch zu bezahlen, schon von vornherein ausgeschlossen. Wer sich die Mühe macht, den Revisionsprozess erfolgreich zu durchlaufen, hat auch Anspruch auf eine Vergütung. Da ist es dann die ehrlichere Variante, sich sein Plugin von Anfang an bezahlen zu lassen. Der Durchschnittspreis liegt bei etwa 30 US Dollar. Wer das nicht ausgeben möchte, kann sich sein Add-On oder Theme leicht selbst bauen, tiefergehende PHP-Kenntnisse sind dann allerdings Voraussetzung.
Dokumentation
Die Konzepte von concrete5 sind für erfahrene Programmierer und Integratoren sehr leicht zu begreifen. Für Einsteiger werden Videos (in englischer Sprache) angeboten. Es macht sogar Spass, sich die anzuschauen und die gezeigten Beispiele nachzuvollziehen. Es existiert eine klare Struktur, Einsteiger wissen intuitiv wo sie anzufangen haben und wo es weiter geht. Für Entwickler gibt es ein ebenso klares und verständliches Nachschlagewerk zu allen notwendigen Themen. Die API ist vollständig dokumentiert, wenn hier auch noch ein wenig mehr Kommentare wünschenswert wären.
Mehrsprachigkeit und Übersetzungen
Concrete5 unterstützt mehrsprachige Websites im Frontend. Für die Übersetzung des Cores, der Add-Ons und Blöcke wird gettext verwendet. Sämtliche Ausgaben des PHP-Codes sind in die Funktion t('Zu übersetzender String') eingebettet. Somit ist es zum Beispiel mit poEdit sehr leicht möglich, nur in Englisch vorliegende Add-Ons in jede beliebeige Sprache zu übersetzen. Die resultierenden .mo Dateien werden dann einfach im Verzeichnis languages gespeichert und vom System automatisch erkannt und verwendet. Eine genaue Anleitung gibt es hier. Für viele Sprachen liegen aber bereits fertige Übersetzungen vor, die nur herunter geladen werden müssen.
Fazit
Concrete5 ist ein CMS, das sich keinesfalls vor den großen Konkurrenten wie Drupal, TYPO3, Joomal oder WordPress verstecken muss. Ganz im Gegenteil sehe ich persönlich die realistische Chance, dass concrete5 in nicht allzu ferner Zukunft dem einen oder anderen jener Systeme das Fürchten lehren wird. Ausprobieren lohnt sich allemal, alle Kunden denen wir es bisher vorgeführt haben, waren begeistert davon. Über Kommentare (positiv oder negativ) von Leuten, die concrete5 einsetzen, freue ich mich natürlich, muß allerdings gleich sagen, dass ich bei evtl. Problemen (noch) nicht helfen kann. Ich stehe ja selber noch am Anfang meiner concrete5 „Karriere“.
Kleiner Zusatz für mehrsprachige Seiten: Neben dem kostenlosen Add-on
„Internationalization“ (page-to-page Sprachumschaltung) ist der
„Translation Manager“ sehr empfehlenswert. Damit kann man im Backend (Dashboard) einfach eigene Übersetzungen hinzufügen ohne an den .po und .mo Dateien zu arbeiten.
Danke für den Hinweis. Hier noch der Link zum Translation Manager:
http://www.concrete5.org/marketplace/addons/translations-manager/
Das Tool ist nicht kostenlos. Aber das ist genau der Punkt, den ich öfter schon angesprochen habe. Wenn ich etwas benötige und es selbst nicht kann oder machen will, dann zahle ich dafür und kann dann davon ausgehen, dass es problemlos funktioniert. Das ist ein Vorteil und kein Nachteil.
Ich persönlich habe kein Problem damit, Sprachdateien mit poEdit selbst zu erstellen. Wem das zu kompliziert ist, der zahlt 30 Dollar. Selber machen oder zahlen. Ein geniales Konzept, wie ich meine. Denn hier habe ich die Wahl.