CMSstash

Sulu: Junges CMS für den Mittelstand

Autor: Sebastian Schürmanns

Sulu ist ein Open-Source-CMS auf Basis des PHP-Frameworks Symfony. Es wurde von der österreichischen Web-Agentur MASSIVE ART entwickelt und im Jahr 2014 als Open-Source-Projekt veröffentlicht. Laut Eigenverständnis ist das Content Management System "für den Mittelstand und die Industrie" gemacht.

Die Webseite von Sulu

Sulu zeichnet sich vor allem durch ein sehr flexibles Content-Konzept aus, das technisch auf der Verwendung des PHP Content-Repositories PHPCR fußt. Sulu bietet sich vor allem im Enterprise-Bereich als Alternative zu etablierten Open-Source-Systemen wie Typo3 und Drupal an, gerade wenn das Webseiten-Konzept des Unternehmens eine sehr flexible Seitengestaltung erfordert. Für Einzel-Personen und kleinere Unternehmen ist das System zu komplex.

Sulu für Content-Manager

Die modern gestaltete Autoren-Oberfläche von Sulu ist unterteilt in eine Haupt-Navigation auf der linken Seite, einem Content-Bereich in der Mitte und einer Seiten-Vorschau auf der rechten Seite. Zusätzlich gibt es noch Kontext-abhängige Bearbeitungs- und Funktions-Menüs in einer Dachzeile.

Job-Angebote für CMS-Experten

CMS-Experten wie Web-Entwickler, Produkt-Owner oder Projekt-Manager sind heiß begehrt. Daher bietet CMSstash in Zukunft ein Job-Board an. Job-Board ansehen

Relativ eigenwillig, aber auch sehr flexibel ist das Content-Konzept von Sulu: Es gibt zwar schlichte formularbasierte Eingaben mit Title, Description und Content. In den meisten Fällen bestehen Webseite bei Sulu jedoch aus verschiedenen Content-Blöcken. Ein Content-Block kann jede Art von Inhalt umfassen, zum Beispiel eine Überschrift, eine Sub-Headline, ein Zitat, einen Fließtext, ein Bild oder auch ein dynamisches Element wie der Teaser einer anderen Seite. Die einzelnen Blöcke sind zur besseren Übersicht eingeklappt und können per Drag & Drop verschoben werden. Zur Bearbeitung der Inhalte werden die Blöcke per Klick aufgeklappt. Natürlich können bestehende Content-Blöcke auch gelöscht oder neue Content-Blöcke hinzugefügt werden. Welche Content-Typen zur Verfügung stehen, entscheidet dabei das Template.

Das Autoren-Interface von Sulu

Über das System der Content-Blöcke lassen sich auch neue Bilder einfügen oder bestehende Bilder aus der Media-Library integrieren. Die Funktionen für das Bild-Management sind dabei recht umfangreich: Angefangen von Meta-Angaben über einfache Bild-Bearbeitungen wie Crop und Resize bis hin zu Versionierungen und der Generierung bestimmter Ausgabe-Größen.

Das Block-Konzept von Sulu ist durchaus spannend. Kachel-Designs, modular aufgebaute Inhalts-Seiten und ähnliche Anforderungen dürften mit Sulu sehr gut abbildbar sein. Als nachteilig könnte sich das Block-Konzept jedoch bei stärker redaktionsgetriebenen Webseiten herausstellen. Denn die Kleinteiligkeit kann die Entstehung eines flüssigen Redaktionsprozesses behindern. Statt die Seite im Editor in einem Fluss herunterzuschreiben, müssen Autoren permanent neue Blöcke erstellen und positionieren. Zudem kommt man an die Inhalte der Blöcke nur durch erneutes Klicken heran. Teilweise werden auch die Editier-Leisten in den Blöcken erst nach nochmaligem Klicken in ein entsprechendes Eingabefeld eingeblendet. Auch beim Einfügen von Bildern sind Standard-Eingabefelder für Alternativ-Texte und Bild-Unterschriften erst nach mehreren Klicks erreichbar. Durch die Dreiteilung des Bildschirms ist zusätzlich der Bearbeitungsbereich für die Inhalte recht klein und beim Navigieren durch die Haupt-Navigation wirkt die Seite durch das Ein- und Ausfahren des Navigationsbereichs etwas unruhig.

Trotz dieser Einschränkungen bleibt das Konzept von Sulu spannend. Gerade Business-Webseiten, die einen modularen Charakter haben und weniger in Richtung Magazin oder Blog gehen, dürften von der Flexibilität des Systems profitieren. In solchen Fällen erhalten Autoren mit dem System einen großen Gestaltungsspielraum und können die Seiten ähnlich flexible wie bei einem Webbaukasten erstellen.

Sulu für Entwickler

Sulu basiert auf dem beliebten PHP-Framework Symfony und arbeitet mit Doctrine, Backbone.js und Require.js.

Sulu läuft auf Apache- und Nginx-Servern und kann unter anderem mit MySQL und PostgreSQL-Datenbanken betrieben werden. Relationale Datenbanken werden allerdings nur für einen kleineren Teil der Inhalte verwendet, da Sulu die meisten Inhalte in dem Content-Repository PHPCR abspeichert. Über das Content-Repository lassen sich deutlich einfacher unstrukturierte und hierarchisch sortierte Inhalte wie Content-Blöcke abbilden. Mit diesem Konzept folgt Sulu im PHP-Bereich einen ähnlichen Weg wie das Adobe-CMS AEM im Java-Bereich. AEM nutzt für die Speicherung von Inhalten das Content-Repository CRX und ermöglicht damit einen ähnlich flexiblen Umgang mit Inhalten wie Sulu.

Anders als die meisten Content-Management-Systeme bietet Sulu keinen Installations-Wizzard an, sondern beschreibt in einer Anleitung die manuelle Installation über Composer und die Konsole. Nachdem das System und seine Dependencies heruntergeladen wurden (deutlich über 100 MB), müssen einige Konfigurations-Dateien angepasst und ein interner Server über die Konsole gestartet werden. Die Sulu-Webseite ist dann unter http://127.0.0.1:8000 erreichbar. An den normalen Anwender richtet sich Sulu mit diesem Szenario sicherlich nicht, sondern folgt den Trends und Bedürfnissen einer engeren Entwickler-Szene und den Möglichkeiten größerer Unternehmen.

Bei der Template-Entwicklung arbeitet man bei Sulu mit XML und Twig. Die XML-Datei gibt dabei die Seitenstruktur vor und definiert die Eingabemöglichkeiten über das Autoren-Interface. Mit Twig werden dann die Seiten gerendered, also die klassischen Templates erstellt.

Ein XML-Template beinhaltet Angaben wie den Key (Unique Identifier), die View (das Twig-Template), Properties mit Name, Typ, Titel und optional zahlreichen weiteren Eigenschaften. Außerdem werden über die XML-Templates die verschiebbaren Content-Blöcke definiert. Ein typisches Template kann so aussehen:

<!-- app/Resources/templates/pages/event.xml -->
<?xml version="1.0" ?>
<template xmlns="http://schemas.sulu.io/template/template"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://schemas.sulu.io/template/template http://schemas.sulu.io/template/template-1.0.xsd">

    <key>event</key>

    <view>templates/event</view>

    <properties>
        <property name="startDate" type="date">
            <meta>
                <title lang="en">Start Date</title>
            </meta>
            <params>
                <param name="values" type="collection">
                    <param name="concert">
                        <meta>
                            <title lang="en">Concert</title>
                        </meta>
                    </param>
                 </param>
             </params>
        </property>
    </properties>

    <block name="eventDetails" default-type="text">
        <types>
            <type name="text">
                <meta>
                    <title lang="en">Text</title>
                </meta>
            </type>
     </block>

</template>

Die Twig-Templates folgen dem typischen Muster und können beispielsweise so aussehen:

<ul>
    {% for item in sulu_navigation_root_tree('main', 2) %}
    <li>
        <a href="{{ sulu_content_path(item.url) }}"
            title="{{ item.title }}">{{ item.title }}</a>
        {% if item.children|length > 0 %}
            <ul>
            {% for child in item.children %}
                <li><a href="{{ sulu_content_path(child.url) }}"
                        title="{{ child.title }}">
                    {{ child.title }}
                </a></li>
            {% endfor %}
            </ul>
        {% endif %}
    </li>
    {% endfor %}
</ul>

Das Templating birgt also keine großen Überraschungen, auch wenn viele andere Systeme statt XML heute lieber YAML für die Definition von Formular-Feldern und Autoren-Interfaces verwenden. Wer tiefer in die Materie einsteigen will, kann dazu wie immer die Dokumentation des Systems nutzen.

Kosten

Sulu ist komplett Open Source und kostenfrei. Da es sich um ein Enterprise-CMS handelt und es kaum Themes oder Plugins gibt, müssen entsprechende Kosten für die Implementierung eingeplant werden.

Wann macht Sulu Sinn?

Wie Sulu bereits in seiner Eigen-Darstellung beschreibt, ist das System für den Mittelstand und für die Industrie entwickelt worden. Für einfachere Webseiten und kleinere Unternehmen fällt Sulu damit aus. Schon die komplexe Installations-Routine und der Speicherverbrauch machen die Enterprise-Ausrichtung des Systems deutlich. Ob in diesem Umfeld jedoch auch das Content-Konzept von Sulu immer das richtige ist, sollte man vorher genau prüfen. Letztlich eignet sich Sulu eher für modulare und sehr flexible Designs und weniger für redaktionsgetriebene Auftritte. Wenn das Konzept und die Größenordnung passen, kann Sulu als Alternative zu anderen PHP-Enterprise-Systemen wie Typo3 oder Drupal eingesetzt werden. Auch als PHP-Alternative zu dem High-End Java-System AEM von Adobe ist aufgrund des verwandten Konzepts denkbar.

In der IT-Abteilung dürften vor vor allem Symfony-Entwickler und Freunde komplexer und moderner Technologien ihre Freude haben.

Auch andere Experten lesen gerne gute Inhalte und freuen sich, wenn Du diesen Artikel zum Beispiel über Twitter teilst. Auf Twitter gibt es außerdem von @CMSstash tägliche Updates.

Zuletzt aktualisert: 27.02.2018