Das ECMS eZ Publish

Da das Open Source Enterprise Content Management System eZ Publish von der Firma eZ Systems in Deutschland noch nicht sehr bekannt ist, möchte ich hiermit einen kleinen Beitrag dazu leisten, dies zu ändern.

Eine Diskussion darüber, was ein Content Management System überhaupt ist und was in diesem Zusammenhang der Begriff "Enterprise" bedeutet, möchte ich an dieser Stelle nicht führen. Oft wird eZ Publish zusammen mit Typo3 genannt, was meiner Meinung nach jedoch nicht bedeutet, dass man diese beiden Software-Systeme miteinander vergleichen könnte. Es käme einem Vergleich zwischen Apfel und Birne nahe.

Im wesentlichen kann eZ Publish dazu verwendet werden, jeglich Arten von Inhalten zu verwalten, die in irgendeiner Form digital gespeichert werden können. Während sich viele Leute dabei auf die Verwaltung von Internetseiten beschränken, ist dies jedoch nur eine mögliche Variante. Die Fähigkeiten von eZ Publish, insbesondere sein gut strukturiertes Datenmodell aus dem sich eine extrem gute Erweiterbarkeit ergibt, werden oftmals unterschätzt. Demnach kann man eZ Publish nicht nur als eine CMS Software ansehen - vielmehr handelt es sich um eine Beispielimplementierung für das Framework, das sich hinter eZ Publish verbirgt. Die Leistungsfähigkeit diese Frameworks wird mit einer Beschreibung der verschiedenen Merkmale von eZ Publish an dieser Stelle verdeutlicht.

Erweiterbarkeit

Zunächst einmal ist es wichtig die technischen Anforderungen zu kennen, die für einen Einsatz von eZ Publish erfüllt werden müssen. Dies sind

Eine genauere Beschreibung dieser Anforderungen findet sich unter http://ez.no/ezpublish/requirements .

Definition eigener Datentypen

Die Definition eines neuen Datentyps stellt eine der Erweiterungsmöglichkeiten von eZ Publish dar, die sehr nah am Systemkern liegen. Ein neuer Datentyp wird in PHP umgesetzt und benötigt zudem eigene Templates für die Interaktion mit dem Anwender.

Ein Datentyp ist vergleichbar mit denen herkömmlicher Programmiersprachen wie z.B. Integer, String oder auch Array. Datentypen werden verwendet um Informationen zu speichern, wie sie das tun hängt vom jeweiligen Datentyp ab. Letztendlich bildet ein Datentyp zusammen mit einem Namen das Attribut einer Klasse. Eine Klasse dient wiederum als Vorlage zur Erzeugung von Objekten, die dann dazu verwendet werden Informationen kontextbezogen zu speichern. Nachdem ein neuer Datentyp definiert wurde, kann er ohne weiteres in jeder vorhandenen oder neuen Klasse verwendet werden. Das Anlegen bzw. die Modifikation der Klasse und auch der Objekte erfolgt dabei ganz bequem über den Browser unter Verwendung der Standard-Administrationsschnittstelle.

Implementierung neuer Module

Eine weitere und durchaus komplexe Möglichkeit eZ Publish zu erweitern ist die Implementierung neuer Module . Module realisieren die eigentliche Funktionalität in eZ Publish. Dabei kann ein Modul als Funktions-Container verstanden werden, in dem sich die folgenden Elemente befinden, die die eigentliche Funktionalität umsetzen.

  • Sichten
  • Operationen
  • fetch-Funktionen

Historisch gesehen dient eine Sicht dazu gespeicherte Informationen anzuzeigen, allerdings ist diese Sichtweise nicht ganz korrekt. In eZ Publish ist jeder Aufruf einer URL der Aufruf einer (Modul-)Sicht, die auf der Grundlage von übergebenen Parametern bestimmte Aktionen ausführt, wie z.B. das Anzeigen aber auch das bearbeiten von Inhalten. Intern verwendet eine Sicht dann Operationen, die die eigentlich Aktion ausführen. Diese Kapselung macht es möglich, dass eine Operation auch an anderen Stellen (also nicht nur in der Sicht) ausgeführt werden kann. Eine Operation besteht aus mehreren einzelnen Schritten, die nacheinander abgearbeitet werden und erlaubt weiterhin die Einbindung von "externen" Schritten über das Workflow-System von eZ Publish. Über das Workflow-System können Arbeitsabläufe durch die Operation angestossen werden. Ein Arbeitsablauf besteht dabei aus einem oder mehreren Ereignissen, die ebenfalls frei definierbar sind (s.u.). Zusätzlich kann ein Modul auch so genannte fetch-Funktionen zur Verfügung stellen, die dazu verwendet werden Daten in einem Template zur Verfügung zu stellen und somit eine Erweiterung des Sprachumfangs der Template Engine von eZ Publish darstellt.

Erstellung eigener Designs

Gerade bei der Umsetzung von Internetseiten ist das Design ein entscheidender Faktor. Aus diesem Grund ist es in eZ Publish sehr einfach möglich neue Designs zu erstellen, die dann für verschiedene Internetauftritte verwendet werden können. Ein Design ist im wesentlichen ein Sammlung von Templates, Stylesheets , Bildern und bei Bedarf auch JavaScript . Ein Template kann als (X)HTML-Datei verstanden werden, die um Funktionen erweitert wurde um dynamische Inhalte anzeigen zu können. Dynamisch bedeutet in diesem Fall z.B. die Anzeige von Informationen je nachdem welche Rechte ein angemeldeter Benutzer besitzt. Einen ähnlichen Ansatz verfolgt z.B. auch die Template Engine Smarty .

Hinzufügen neuer Template Operatoren

Durch das Hinzufügen von neuen Template Operatoren ist es möglich, den Sprachumfang der Template Engine von eZ Publish direkt zu erweitern. Ein Template Operator kann beispielsweise dazu verwendet werden, Berechnungen durchzuführen oder Strings zu manipulieren. Die Funktionalität neuer Template Operatoren wird in PHP implementiert.

Implementierung neuer Ereignisse

Neue Ereignisse , die in PHP implementiert werden, können in Arbeitsabläfen zusammengefasst werden, um z.B. Informationen (weiter) zu verarbeiten, nachdem der Auslöser einer Operation (s.o.) angestossen wurde. Dadurch wird es möglich eigene oder auch vorhandene Module zu erweitern.

Implementierung neuer Aktionen

Sogenannte Aktionen sind Bestandteil des "content"-Moduls von eZ Publish. Dieses zentrale Modul ist für die Be-/Verarbeitung von Informationen zuständig. Das bedeutet es ermöglicht u.a. das Anlegen, bearbeiten und löschen von Objekten der vorhanden oder auch neu hinzugefügten Klassen (s.o.). Das Modul stellt u.a. eine Sicht names "action" zur Verfügung, mit der diese Informationsverarbeitung auf der Basis von (X)HTML-Formularen umgesetzt werden kann. In eZ Publish ist es ohne weiteres möglich neue Aktionen zur Informationsverarbeitung zu definieren, die ebenfalls in PHP umgesetzt werden.

Single Sign On und Login Handler

Die Umsetzung eines Single Sign-On ( SSO ) mit eZ Publish ist relativ einfach und es kann zwischen den beiden folgenden Möglichkeiten unterschieden werden.

a) Ein Benutzer meldet sich an einem Fremdsystem an und soll dabei auch automatisch in eZ Publish angemeldet werden.

b) Ein Benutzer meldet sich bei eZ Publish an und soll automatisch auch bei einem Fremdsystem angemeldet sein.

Im ersten Fall a) kann eZ Publish unter Verwendung eines sogenannten "SSOHandler" erweitert werden. Wenn ein noch nicht angemeldeter Benutzer versucht eine zugriffsbschränkte Seite in eZ Publish zu betrachten, werden alle registrierten SSOHandler nacheinander ausgeführt um zu überprüfen, ob der Benutzer sich schon erfolgreich bei einem Fremdsystem angemeldet hat. Wenn das der Fall ist, wird der Benutzer auch automatisch bei eZ Publish angemeldet. Andernfalls muss sich der Benutzer wie gewohnt zunächst bei eZ Publish anmelden. Die Implementierung des SSO-Handshakes hängt dabei von den Anforderungen bzw. Möglichkeiten des Fremdsystems ab. Es stehen jedoch alle Möglichkeiten zur Verfügung, die auf Basis von PHP umgesetzt werden können.

Im zweiten Fall b) kann eZ Publish durch einen sogenannten "Login Handler" erweitert werden. Wenn sich ein Benutzer in eZ Publish anmeldet, werden alle Login Handler nacheinander ausgeführt und können zur Authentifizierung des Benutzers verwendet werden. Ein LoginHandler könnte in diesem dazu verwendet werden, ein Fremdsystem über die erfolgreiche Anmeldung zu informieren. Auch in diesem Fall hängt eine Implementierung von den Anforderungen bzw. Möglichkeiten des Fremdsystems ab. Selbstverständlich ist es auch möglich, dass das Fremdsystem eine Anfrage an eZ Publish stellt, um zu Überprüfen, ob sich ein Benutzer bereits erfolgreich authentifiziert hat. Diese Funktionalität könnte mit Hilfe eines neuen Moduls (s.o.) realisiert werden.

Ausserdem ist es noch möglich ein Single Sign-On nur dann durchzuführen, wenn z.B. die einzelne Seite eines Fremdsystems in eZ Publish angezeigt werden soll. Dies könnte mit Hilfe eines neuen Template Operators (s.o.) umgesetzt werden, der ein verschlüsseltes SSO-Token erzeugt und dieses beim Zugriff auf die angeforderte Seite an das Fremdsystem übermittelt, um den Benutzer dort zu authentifizieren.

Definition neuer Cronjobs

Typische Aufgaben der bereits mit eZ Publish ausgelieferten cronjobs sind z.B. der regelmässige Import von Daten aus externen Quellen oder auch der Versand von E-Mails, um registrierte Benutzer über bestimmte Ereignisse zu informieren. Mit eZ Publish ist es sehr einfach neue cronjobs in das System einzubinden, um eigene Aufgaben in regelmässigen Abständen durchzuführen.

Neue Übersetzungen erstellen

Gerade im Hinblick auf die oft geforderte Mehrsprachigkeit von Internetseiten ist es wichtig entsprechende Übersetzungen sowohl für die Besucher der Internetseiten also auch für die Redakteure und Administratoren zur Verfügung zu stellen. Während die eigentlichen Inhalte der Internetseiten in der Regel von den Redakteuren übersetzt werden, werden die nicht zum Inhalte gehörenden Teile wie z.B. Knöpfe oder andere Bedienelemente maschinell übersetzt. Dabei werden die zu übersetzenden Textteile automatisch aus den PHP Dateien und Templates extrahiert und in einer Übersetzungsdatei zusammengefasst und abgespeichert. Diese kann dann mit einem grafischen Werkzeug einfach übersetzt werden. Auch diese Übersetzungen können sehr einfach in einer eigenen Erweiterung zur Verfügung gestellt werden, um vorhandene zu ersetzen oder neue zur Verfügung zu stellen.

eZ Publish™ copyright © 1999-2009 eZ Systems AS