Chuck Norris hat ein „Sie haben gewonnen“-Banner angeklickt. Und er hat gewonnen!

15.05.09

Symphony-CMS

Manchmal braucht man gar nicht vom Teufel zu sprechen, es reicht, wenn man an ihn denkt.

Ich dachte mir schon vor etwas längerer Zeit, dass mit XSLT eine schon perfekte Template-Engine für Content-Management-Systeme geschaffen wurde. Viele CMS benutzen Smarty oder lassen den Entwickler auch die PHP-Funktionen direkt reinhauen. Die an XML angelehnte Version von Textpattern kam meinem Ideal schon recht nahe.

Vor kurzem bin ich dank eines Tweets von Manuela Hoffmann (die mir seit ca. drei Monaten eine Antwort auf eine E-Mail schuldig ist) auf das Symphony-CMS gestoßen.

Das erste, was mir auf der Startseite sofort ins Auge sprang, war die Unterüberschrift »Open source XSLT content management system«. Ich hatte vielleicht gefunden, was ich lange gesucht hatte.

Und tatsächlich hat mich das System bisher sogar positiv überrascht. XSLT ist wirklich perfekt eingesetzt und das Backend von Symphony wirkt zwar etwas steril, dafür findet man sich aber auf Anhieb zurecht.

Das Backend ist sehr aufgeräumt.

Wenn man keine Grundkenntnisse im Umgang mit XSLT hat, wird der Einstieg sicherlich etwas schwer. Mit dem Tutorial von w3schools hat man sich aber schnell in die Materie eingefuchst.

Abgesehen davon, dass ich XML, XSL und XPath persönlich sehr cool finde, gibt es noch andere überzeugende Argumente für den Einsatz dieser Markup-Languages als Template-Sprachen.

Zum einen sind XSLT-Dateien selbst in XML-Form geschrieben. Das bedeutet, man könnte (wieder mithilfe von XSLT) diese Templates, die man schon für Symphony geschrieben hatte, in andere Template-Sprachen wie Smarty transformieren.

Die Seiten werden mit XSLT erstellt.

Ein kleines Detail sollte auch nicht unerwähnt bleiben. Mit dem XSLT Output-Element kann man unter anderem angeben, ob das fertig transformierte HTML-Dokument korrekt oder überhaupt nicht eingerückt werden soll. In der Testphase sollte man die Option auf jeden Fall aktiviert haben. Bei indent="yes" werden sinnvolle Einrückungen vorgenommen, egal, wie man im urpsrünglichen XSLT-File mit Leerzeichen und Zeilenumbrüchen um sich geworfen hat.

Das ist vor allem für mich, als geplagten Textpattern-User eine Erleichterung, denn TXP veranstaltet oftmals unschöne Einrückungen, z.B. bei den Attributen wraptag oder break.

Wirklich praktisch wird ein »no« hier erst, wenn es um wirklich jedes Byte geht, denn durch die fehlenden Leer- und Tabulatorzeichen fallen bis zu 25% der Codegröße weg. Bei Webapplikationen mit viel Overhead und wenig Content ist das nicht zu missachten.

Ein anderer großer Vorteil ist selbstverständlich die Tatsache, dass es sich bei XSLT um einen hochoffiziellen Standard handelt.

Nutzen kann man das CMS übrigens sehr vielseitig. Die Templates lassen sich sehr modular aufbauen und dank sog. »Data Sources« lassen sich Schablonen für Inhalte wie Text, Bilder, Links etc. anlegen. Das Ganze kann man dann unterscheiden zwischen »ausschließlich für’s Backend« und »für Seitenbesucher«.

Es gibt zwar schon eine solche Schablone für »Comments«, allerdings ist das nichts weiter als eine »Articles«-Schablone mit subtilen Unterschieden.

Eine große Erleichterung während der Wartung ist der Maintenance-Mode. Ist man eingeloggt, kann man die Website ganz normal betrachten und – mit den integrierten Entwicklerwerkzeugen wie dem Debugger – fröhlich testen, während alle anderen Besucher eine Informationsseite zu sehen bekommen.

Wartungshinweis

der Debugger.

Seiteninformationen werden angezeigt.

Das CMS macht es außerdem möglich, für eingeloggte Backend-User im Frontend Schaltflächen einzurichten, mit denen z.B. Artikel direkt bearbeitet werden können. Für mich kommt dieses Angebot aber nicht infrage, da ich es lieber habe, wenn das Frontend dafür gebraucht wird, wofür man es geschaffen hat: für den Besucher.

Natürlich gibt es auch eine Plugin-Möglichkeit. Dank der Vielseitigkeit der XSLT-Templates wird man diese aber wahrscheinlich gar nicht so oft in Anspruch nehmen müssen.

Negativ aufgefallen ist mir bisher nur die eher mäßige Visualisierung des Seitenbaums und das Auftreten von Parsing-Fehlern, wenn man in seine Artikel Entities à la » « schreibt.

Die Anzeige der Einzelseiten ist nicht ganz gelungen.

Symphony ist trotzdem ein sehr vielseitiges und flexibles CMS, das ich in nächster Zeit produktiv einsetzen werde. Ob ich von meinem Traum-CMS reden kann, wird sich abzeichnen; die Chancen stehen auf jeden Fall sehr gut.

Kommentare [10]

Walter S. am 18.05.2009 um 21:14

Finde die Idee und die Funktionalität auch klasse, aber die Umsetzung. Im zweiten Screenshot der Debug-Ansicht: „Total Database Queries: 105“ – haben die eine Macke?! Sorry, für den ungepflegte Ausdrucksweise, aber das geht ja nun mal garnicht. Was soll der Mist? So kann man das Ding doch nicht einsetzen. Am Ende also doch wieder Müll. Wie bei SilverStripe: keine ordentlicher URL-Aufbau möglich und dafür bekommen die auch noch einen Preis.

Flux am 19.05.2009 um 15:40

Kann dem System auf den ersten Blick nichts abgewinnen. Sieht nicht nur bieder sondern auch umständlich und kompliziert aus.

Nils Hörrmann am 19.05.2009 um 18:16

Ich kann Symphony nur wärmstens empfehlen, da es unglaublich flexibel ist: von den Sektionen für die Dateneingabe über die URLs bis hin zur Datenausgabe lässt sich alles einstellen, wie man es braucht. Mit XML und XSLT wird für das Templating auf Webstandards gesetzt und auch hier bestimmt man selbst, was auf Fronendseite ausgegeben wird, da das System selbst kein Markup vorgibt.

Bezüglich der Datenbankabfragen: Diese scheinen in der Tat auf den ersten Blick sehr hoch, ich erinnere mich aber, dass die Entwickler im Vorfeld der Veröffentlichung von Symphony 2 ausführliche Performancetests in diesem Bereich gemacht haben. Die Zahl der Abfragen muss dabei im Gesamtkontext gesehen werden: Wie ist die Datenbank aufgebaut, wie umfangreich bzw. komplex sind sie im Einzelnen. Symphony macht hier einen guten Job.

Auf der Performance-Seite gibt es derzeit eher ein anderes Problem: die Erstellung großer XML-Mengen aus den abgerufenen Daten. Diese kann im ungünstigen Fall zu verlängerten Ladenzeiten führen. Das Problem liegt hierbei nicht auf Datenbankseite, sondern darin, wie die Daten in XML umgewandelt werden. Die Ursache liegt auf PHP-Ebene und eine Lösung ist für eine der kommenden Versionen angekündigt: Man wird auf PHP-eigenen Funktionen umsteigen. Bei einer normalen Seitenkomplexität tritt dieses Problem in der Regel nicht zu Tage.

Wer sich für Webstandards und einen flexiblen Seitenaufbau interessiert, sollte Symphony einmal aufprobieren. Es ist sicherlich kein Mittel für alles, aber eine gute Alternative zu Textpattern, Wordpress oder ExpressionEngine.

Markus Schlegel am 20.05.2009 um 17:51

Ich denke, Textpattern ist in Sachen Performance unschlagbar. Die kleine Menge an Queries muss da aber nicht der entscheidende Faktor sein.

Wie man dem Screenshot nämlich auch entnehmen kann, liegt die Gesamtzeit an Query-Aufwand bei unter 40ms, was beim letztlichen Seitenaufbau nicht einmal merkbar sein wird. Man kann sich an der Stelle selbstverständlich auch tot-optimieren; sinnvoller wäre es jedoch, sich den wirklichen Performance-Fressern (Bilder, Flash, JavaScripts) zu widmen.

Leon am 26.05.2009 um 11:40

Der Performance Test ergab bei mir eine Gesamtzeit von nur 0,0621s, was durchaus akzeptabel ist.

Die Freiheiten, alles anzupassen und quasi keine Vorgaben bei der Gestaltung der Datenstruktur/Transformation/Design zu bekommen spricht in meinen Augen eindeutig für Symphony.

Es ist halt nicht für Anfänger gedacht, jedoch könnten darchaus Metapakete angeboten werden, die fertige Templates für Benutzergruppen beinhalten, wodurch Symphony auch für Anfängern leicht zu nutzen wäre.

Die Übersichtlichkeit des Admin-Bereichs ist meiner Meinung nach sehr vorbildlich, was bei anderen Systemen oft nicht der Fall ist und diese durch ihre zahlreichen Funktionen den Benutzer oft zu erschlagen drohen.

Markus Schlegel am 26.05.2009 um 11:48

Die Übersichtlichkeit des Admin-Bereichs ist meiner Meinung nach sehr vorbildlich, was bei anderen Systemen oft nicht der Fall ist und diese durch ihre zahlreichen Funktionen den Benutzer oft zu erschlagen drohen.

Ja, die Übersichtlichkeit ist schon gut, mir fehlen aber ein paar Funktionen wie z.B. »Frontend anzeigen«. Aber solange es sich nicht Wordpress als Vorbild nimmt, kann ich darauf verzichten ;)

Nils am 11.06.2009 um 18:19

Markus: Wenn du oben auf den Titel klickst, gelangst du aufs Frontend :-)

Markus Schlegel am 11.06.2009 um 18:59

Auch nicht schlecht. Darauf muss man erst einmal kommen. Danke für den Hinweis!

Doku am 16.07.2009 um 17:50

Hmm, das klingt ziemlich interessant, jedoch finde ich auf der Homepage nur so ein bisschen Doku. Kennt jemand da noch was mehr?

Markus Schlegel am 16.07.2009 um 19:13

Auf der Startseite sind vier externe Artikel verlinkt:

Mit diesen ist eigentlich das meiste schon erklärt. Alles weitere Wissen dreht sich um XSLT.

Das Forum ist übrigens sehr schnell und gut.

Kommentar verfassen

Textile-Hilfe

  • *stark*
  • _betont_
  • "Link":http://url.com/
  • bq. Zitatkasten
  • bc. Code-Block
Der Kommentar kann erst abgeschickt werden, wenn man mindestens einmal die Vorschaufunktion aktiviert hat.

Flattr

Blogrolle

Podroll

Soziale Netzwerke

Twitroll