Wie funktionieren eigentlich webEdition Objekte?

Das webEdition Datenbank- / Objekt-Modul zählt zu den am meisten genutzten Systemkomponenten des Open Source Content Management Systems webEdition. Trotz der häufigen Nutzung sorgen sowohl der Name als auch Eigenschaften wie Arbeitsbereiche, Voreinstellung Dokument für die Darstellung und der Umgang mit verschiedenen webEdition Tags immer wieder zu Verwirrung. Daher wollen wir die Frage: „Wie funktionieren webEdition Objekte eigentlich?“ beantworten.

Was ist das Datenbank- / Objekt-Modul?

Die Bezeichnung Datenbank- / Objekt-Modul sorgt besonders bei Einsteigern immer wieder zur Verwirrung, da sie oft vermuten, dass das CMS ohne dieses Modul seine Daten nicht in einer Datenbank speichert. Diese Vermutung ist jedoch falsch. Das Content Management System webEdition speichert grundsätzlich alle Daten in einer Datenbank. Über das Datenbank- / Objekt-Modul steht dem Anwender lediglich eine Möglichkeit zur Verfügung eigene Datenbanktabellen komfortabel über das Backend des Systems zu erstellen. Das klingt im ersten Moment sehr unspektakulär und einfach, bietet aber eine sehr große Flexibilität bei der Erfassung und Verwaltung strukturierter Daten und zwar individuell abgestimmt auf die Projekt- und Kundenanforderungen.

Jetzt könnte die Frage aufkommen: „Wenn das so etwas Tolles ist, warum ist es dann ein Modul und nicht direkt in webEdition integriert?“ Obwohl das Wort Modul diese Frage aufwirft, handelt es sich bei dem Datenbank- / Objekt-Modul um ein integriertes Feature-Set. Die Bezeichnung stammt noch aus der Zeit (vor 2009) als das CMS webEdition kommerziell entwickelt und vertrieben wurde. Damals mussten sich Anwender dieses Feature-Set über eine zusätzliche Lizenz freischalten lassen.

Klassen und Objekte – das verstehen doch nur Programmierer

Wer mit dem Datenbank- / Objekt-Modul arbeitet, wird mit den Begriffen Klassen und Objekte in Berührung kommen. Beide Bezeichnungen erinnern an die "Objektorientierte Programmierung". Ähnlich funktioniert auch die Arbeit mit Objekten. Über sogenannte Klassen wird zunächst die Objektstruktur erstellt. Dabei legt bspw. der Administrator oder der Entwickler fest, welche Eingabefelder und -typen für Objekte zur Verfügung stehen. Im Hintergrund entsteht eine neue Datenbanktabelle, die genau aus den zuvor festgelegten Feldern und Feldtypen besteht.

Nehmen wir z.B. an, sie wollen Immobilien auf einer Website vorstellen und/oder verkaufen. Dafür erstellen wir zunächst eine Klasse Immobilie. Diese Klasse erhält dann z.B. folgende Felder:
* Name (Texteingabefeld, einzeilig)
* Beschreibung (Texteingabefeld, mehrzeilig)
* Typ (Auswahlfeld mit den Werten Haus, Wohnung, etc.)
* Zimmeranzahl (Eingabefeld nur ganze Zahlen)
* Wohnfläche (Eingabefeld nur Zahlen)
* Nutzungsfläche (Eingabefeld nur Zahlen)
* Kaufpreis (Eingabefeld nur Zahlen)
* PLZ (Eingabefeld nur ganze Zahlen)
* Ort (Texteingabe oder Auswahlfeld)
* Straße (Texteingabefeld, einzeilig)
* etc.

Nachdem die Klasse Immobilie erstellt wurde, hat das CMS webEdition eine neue Datenbanktabelle erzeugt, die nun einzelne Immobilien (Objekte) mit den oben genannten Eigenschaften speichern kann. Der Redakteur bzw. Makler kann jetzt im CMS über das Menü Datei > Neu > Objekte > Immobilie Immobilien anlegen und verwalten.

SEO-URLs, Arbeitsbereiche und TriggerIDs

Neben der strukturierten Erfassung und Verwaltung von Daten bieten webEdition Objekte eine Reihe weiterer Vorteile:
* Individuelle SEO-URLs
* Unterschiedliche Darstellung im Frontend basierend auf der URL-Strutkrur (Arbeitsbereiche + TriggerID)
* Verknüpfung von Objekten mit anderen webEdition Modulen wie Navigation, Kundenverwaltung, Newsletter, etc.
* Optimale Im- und Export-Möglichkeiten durch Datenhaltung in einer eigenen Datenbanktabelle
* Zugriffsberechtigungen lassen sich pro Eingabefeld festlegen
* etc.

Wie bereits beschrieben, erfassen wir mit webEdition Objekten Daten vollständig getrennt von Layout-Informationen. Daher benötigen wir für die Darstellung von webEdition Objekten im Frontend immer ein s. g. Trigger-Dokument. Ein Trigger-Dokument ist nichts anderes als ein webEdition Dokument, welches zwei Aufgaben erfüllt:
- Es steuert (im Zusammenspiel mit Arbeitsbereichen) die Darstellung der Objektdaten
- Es gibt einen Teil der URL vor

Wenden wir uns wieder unseren Immobilien zu, könnte es bspw. die beiden URLs /kaufen/index.php und /mieten/index.php geben. Dabei können die beiden webEdition-Dokumente index.php als Trigger-Dokument für webEdition Objekte dienen.

Rufen wir jetzt eine Immobilie (webEdition Objekt) mit dem Trigger-Dokument /kaufen/index.php auf, erhalten wir folgende URL: /kaufen/index.php?we_objectID=1234. Analog das gleiche mit /mieten/index.php?we_obejctID=1234. Obwohl die beiden URLs unterschiedlich sind, können wir festlegen, ob die Darstellung der Immobilien unter beiden URLs identisch ist, oder sich unterscheidet. Die Steuerung der Darstellung erfolgt über die Arbeitsbereiche. Ein Arbeitsbereich legt fest, welches Template/Vorlage der jeweiligen URL für die Darstellung genutzt werden soll. Wenn wir als Arbeitsbereich / und nur ein Template definieren, dann wird das Immobilienobjekt immer gleich angezeigt. Wenn ich jedoch die Arbeitsbereiche /kaufen und /mieten mit unterschiedlichen Vorlagen verknüpfe, dann wird auch das Immobilienobjekt unterschiedlich auf der Website angezeigt.

Nachdem wir nun wissen, wie wir mit Trigger-Dokumenten und Arbeitsbereichen die Darstellung von Objekten beeinflussen, widmen wir uns noch den SEO-URLs. Statt /kaufen/index.php?we_objectID=1234 wollen wir z.B. die URL /kaufen/3-Raum-Appartment haben. Um das zu erreichen, müssen wir quasi index.php?we_objectID=1234 durch 3-Raum-Appartment ersetzen. Das lässt sich sehr einfach realisieren, indem wir zunächst bei der Klasse Immobilie beim Feld Name den Radio-Button URL-Feld-1 aktivieren. Damit haben wir dem CMS mitgeteilt, dass das Feld Name Bestandteil der URL sein soll. Jetzt wechseln wir bei der Klasse Immobilie zu den Klasseneigenschaften und wählen bei SEO-URL nur noch das Feld URL-Feld-1 aus und speichern die Klasse.

Wenn der Redakteur bzw. Makler nun über Datei > Neu > Objekt > Immobilien eine neue Immobilie anlegt, und bei Name „3 Raum Apartment“ angibt und als Trigger-Dokument (Voreinstellung Dokument für die Darstellung) /kaufen/index.php auswählt, erzeugt webEdition automatisch die SEO-URL /kaufen/3-Raum-Apartment. Soll das Apartment auch vermietet werden, kann die Immobilie auch über die URL /mieten/3-Raum-Apartment verfügbar gemacht werden. Durch eine andere Vorlage für den Arbeitsbereich /mieten wird nicht der Kaufpreis, sondern der Mietzins und weitere Informationen wie Kaution etc. angezeigt.

Das war nun ein sehr einfaches Beispiel. Bei den SEO-URLs lassen sich bis zu drei Felder (z.B. Name und Ort) einer Klasse als URL-Felder definieren und über die Klasseneigenschaften beliebig mit weiteren Attributen wie Sprache, ID, Jahr, Verzeichnissen, etc. kombinieren. Dadurch sind der URL-Gestaltung (fast) keine Grenzen gesetzt.


Nicht vergessen: mod_rewrite und .htaccess

Damit SEO-URLs letztendlich auch vom Server richtig verarbeitet werden, muss für den Webserver das Apache-Modul mod_rewrite aktiviert sein und im DOCUMENT_ROOT des Webservers für eine Domain, muss es folgende .htaccess-Datei geben:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /webEdition/redirectSEOurls.php [L]
ErrorDocument 404 /webEdition/redirectSEOurls.php



Fassen wir noch einmal zusammen

Mit webEdition Objekten erfassen und verwalten wir Daten medienneutral in einer individuell angelegten Datenbanktabelle. Das Anlegen solcher Datenbanktabellen erfolgt komfortabel über ein grafisches Userinterface direkt in webEdition. Die Datenstruktur und Einstellungen für SEO-URLs von Objekten erfolgt über (Objekt-)Klassen.

Um webEdition Objekte auf der Website anzeigen zu können, benötigen wir s. g. Trigger-Dokumente (dynamische webEdition Dokumente). Sie haben wesentlichen Einfluss auf die SEO-URL und zusammen mit den Arbeitsbereichen auf die Darstellung. Mit Arbeitsbereichen legen wir fest, mit welchem Template das Objekt (z.B. Immobilien) abhängig von der URL angezeigt wird.

Ich hoffe, dass nun die grundlegende Funktionsweise von webEdition Objekten etwas klarer ist und der Umgang mit TriggerIDs und Arbeitsbereichen leichter fällt.

powered by webEdition CMS