AddOn-Entwicklung #1 - Einleitung

In diesem umfangreichen Workshop widmen wir uns voll und ganz der AddOn-Schnittstelle von REDAXO. Wir liefern grundlegende Informationen über das Prinzip von AddOns und die Seitengenerierung, aber wir entwickeln auch beispielhaft ein einfaches AddOn, das als Muster für viele eigene AddOns dienen kann. Außerdem kommen Hilfsmittel zur Sprache, die die AddOn-Erstellung erleichtern und erweitern können.
Der Workshop bezieht sich auf die REDAXO-Versionen 4.0 bis 4.3. Er basiert grob auf einem Artikel, den ich August 2009 für das PHP Journal geschrieben hatte, nun jedoch modifiziert und stark erweitert wurde.

Wofür braucht man AddOns?

AddOns erweitern REDAXO, und zwar in einer Art und Weise, wie das nur mit Templates und Modulen allein nicht möglich wäre. Es wurden bereits AddOns für verschiedenste Zwecke entwickelt. Das Prinzip von REDAXO ist es bekanntlich, nur die absolut nötigen Funktionen im Core bereitzustellen; alle nicht unbedingt nötigen Funktionen sind in AddOns ausgelagert. Bereits in der Standard-Version von REDAXO liegen also einige AddOns bei, die den Funktionsumfang erhöhen, wenn man sie denn installiert: der Im- und Export der Datenbank, die Optik des Backends oder die Verwaltung von Metainformationen sind nur einige.

Über so genannte Extension Points kann sich ein AddOn darüber hinaus in die Seitenerzeugung einklinken und diese weitgehend beeinflussen – was natürlich vielfältige Möglichkeiten eröffnet. Ein AddOn legt oft einen eigenen Hauptmenü-Punkt im Backend an, muss es aber nicht. AddOns können das Backend erweitern, aber ebenso die Seitengenerierung im Frontend beeinflussen. Der URL-Rewriter ist ein Beispiel für ein AddOn, dass seinen Job still und unauffällig im Frontend und ohne weitere Einstellmöglichkeiten im Backend verrichtet.

Ein typischer Fall für ein AddOn ist in vielen Fällen aber auch das Verwalten großer Datenmengen, die sich mit den normalen Content-Werkzeugen von REDAXO (Artikel, Kategorien, Module) bisweilen nicht mehr sinnvoll bewältigen lassen. So ein AddOn selbst zu erstellen, ist mit ein wenig PHP/MySQL-Kenntnissen nicht schwer.
Um ein AddOn entwickeln zu können, sollte man im Umgang mit REDAXO vertraut sein und sich im Frontend und im Backend sowie mit dem Prinzip von Artikeln und Strukturverwaltung halbwegs auskennen.

AddOn in sieben Schritten

Zum Beispiel: Adressverwaltung

Stellen wir uns vor, wir wollen auf unserer Website eine umfangreiche und häufig aktualisierte Adressensammlung verwalten. Bis zu einem gewissen Grad lässt sich das natürlich mit den üblichen Artikeln und Modulen bewerkstelligen. Selbst eine automatische Sortierung zum Beispiel nach Datum wäre möglich, denn sowohl Artikellisten als auch die Module einer Seite könnte man mittels eigener SQL-Befehle auslesen und so hilfreiche Sortier-, Filter- und Paginierungs-Mechanismen entwickeln.

Sobald die Adressen aber eine gewisse Menge erreichen, wird der Umgang unübersichtlich, um nicht zu sagen kritisch. Stellen wir uns einige Tausend, mit einem Modul verwalteten Adressen im Backend (dem Adminbereich von REDAXO) vor – das Laden einer derart langen Liste brächte nicht nur den Serverspeicher in Bedrängnis, sondern würde auch das Auffinden der gewünschten Datensätze im Backend enorm erschweren.

Nun – eine Aufgabe wie diese ist wie geschaffen für AddOns – in anderen Content Management Systemen heißen sie auch Plugins, Extensions, etc. Die AddOns muss man sich als eigene kleine Applikation innerhalb von REDAXO vorstellen. AddOns nutzen oft die System-Klassen zum Auflisten von Datensätzen und zur Bearbeitung via Formularfelder – einfach deswegen, weil man genau diese Funktionen ohnehin meist in einem AddOn benötigt und die Optik und Usibility sich so vom restlichen REDAXO-System nicht unterscheidet.
Ein Addon könnte freilich auch eigene Klassen und Funktionen nutzen – einige tun dies auch – , doch die in REDAXO enthaltenen Klassen bringen bereits alle nötigen Funktionalitäten mit, so dass man im Normalfall auf diese gern zurückgreifen wird.

Das in diesem Beispiel erstellte AddOn kann man im Downloadbereich herunterladen

AddOn in sieben Schritten

AddOns installieren

AdOns zu installieren ist denkbar einfach: Die auf der REDAXO-Website herunterladbaren AddOns bestehen üblicherweise aus einer ZIP-Datei. Nach dem Extrahieren muss man den AddOn-Ordner samt aller darin befindlichen Unterordner in das Verzeichnis redaxo/include/addons des Webservers hochladen. In einer REDAXO-Standardinstallation sieht man dort einige System-AddOns wie z.B. Image-Resize, Metainfo und Import_Export sowie optionale AddOns wie TinyMCE, PHPMailer oder Version. System-AddOns sind Bestandteil des REDAXO-Kerns und sollten somit nicht gelöscht werden.

Nach dem FTP-Upload muss man das AddOn noch im Backend installieren. Unter dem Menüpunkt AddOns findet man sämtliche im AddOn-Verzeichnis existierenden AddOns alphabetisch aufgelistet. Ein Klick auf “installieren” beim entsprechenden AddOn startet die AddOn-spezifische Installation: Es werden ggf. Datenbanktabellen angelegt und/oder benötigte Dateien und Ordner in öffentliche Verzeichnisse kopiert, wenn das AddOn diese zum Beispiel für die Frontend-Anzeige benötigt. Nach der erfolgreichen Installation muss das AddOn noch durch einen Klick auf “aktivieren” im System angemeldet werden. Das AddOn wird dadurch im System registriert, und ggf. existierende AddOn-eigene Klassen und Funktionen werden inkludiert. Außerdem ist für dieses AddOn – sofern es entsprechend programmiert wurde – ein neuer Hauptmenüpunkt hinzugekommen. Den sieht man allerdings erst nach einem Seiten-Reload.

Weiter zum Teil 2 - Anatomie eines AddOns