AddOn: Aufbau und Struktur

Ein AddOn kann aus mehreren Verzeichnissen und Dateien bestehen, nachfolgend werden nur die gebräuchlichsten aufgelistet. Das AddOn besteht aus einer verpflichtenden Konfigurationsdatei package.yml und den nachfolgenden optionalen Ordnern und Dateien. Richtig gelesen: Nur die package.yml ist erforderlich. Ein solch leeres AddOn hätte sicher einen sehr geringen Nutzen, daher gibt es mehrere Dateien und Ordner, die den Aufbau und die Ausführung eines AddOns vereinfachen.

Den Entwickelnden steht es frei, weitere Ordner z. B. Module und Templates oder anderes zu erstellen. Hier verzichtet man jedoch auf hilfreiche Automatismen (z. B. Autoload, automatisches Kopieren) und muss sich selbst um die korrekte Einbindung, z. B. von PHP-Classes und Assets kümmern.

Ordner- und Datei-Struktur

Der AddOn-Ordner (wie auch das AddOn selbst) muss einen eindeutigen, unverwechselbaren Namen haben, den AddOnkey. Damit es nicht zu Konflikten mit anderen AddOns mit gleicher Bezeichnung kommt, sollte der Key in MyREDAXO registriert sein. Er wird in der package.yml hinterlegt.

Abhängig vom Projekt werden in AddOns folgende Ordner und Dateien verwendet:

Ordner Datei Beschreibung
package.yml Definiert das AddOn, grundlegende Einstellungen - Diese Datei ist unbedingt erforderlich 
boot.php Die boot.php wird bei jeder Aktion in REDAXO ausgeführt. Hier können beliebige Befehle ausgeführt werden
help.php Alternative zur Readme. Wird automatisch als Hilfeseite zum AddOn eingebunden, kann Programmcode enthalten.
install.php Wird automatisch bei der Installation ausgeführt. (z. B. Anlegen von Datenbanken, Installation von Modulen, bestimmte Prüfungen, Festlegen erster Konfigurationswerte
uninstall.php Gegenstück zu install.php. Hier können zusätzliche Deinstallationsschritte eingefügt werden. 
install.sql SQL-Datei, die bei der Installation ausgeführt wird
uninstall.sql SQL-Datei, die bei der Deinstallation ausgeführt wird
update.php Die update.php wird ausgeführt, wenn eine Aktualisierung über den Installer erfolgt. Die update.php wird nicht bei einem manuellen Update ausgeführt.
README.md Sofern gefunden und eine help.php nicht vorliegt, wird diese Datei automatisch als Hilfeseite eingebunden. Die README kann mehrsprachig hinterlegt werden. README.en.md würde dann in einem englischsprachigen Backend aufgerufen werden. Ist die README semantisch korrekt aufgebaut, wird automatisch ein Inhaltsverzeichnis generiert.
assets .css, .js, *.png etc. Hier werden die Assets des AddOns abgelegt. Bei Installation werden diese in den Ordner /assets/addon/addon_name/ kopiert. Sie stehen somit öffentlich zur Verfügung. Es sind Unterordner möglich
data Hier kann das AddOn zusätzliche Daten ablegen. Diese werden z.B. per rex_dir::copy($addon->getPath('data'), $addon->getDataPath()) im Ordner   /redaxo/data/addons/addon_name abgelegt
fragments Ordner für Fragmente 
lang *.lang Hier werden die Sprachdateien abgelegt
lib Ordner für eigene Classes und Funktionen, selbst entwickelte Dateien
pages Ordner für die Backendseiten des AddOns (z. B. Hilfe, Setup) 
index.php Wird automatisch beim Aufruf des Menüpunktes aufgerufen und bindet ggf. zusätzliche Seiten ein. 
plugins Hier findet man die mitgelieferten PlugIns
vendor Vendor-Ordner – hier werden fertige Classes, Skripte, Applikationen von „Lieferanten“-Quellen/Vendors abgelegt.
ignore_installer Zun Ausschluss von Ordnern und Dateien bei der Erstellung des Installationspaketes

Autoload lib und vendor werden rekursiv nach PHP-Klassen durchsucht. Die gefundenen Klassen werden automatisch eingebunden. Zusätzlich zu den hier genannten Dateien empfiehlt sich, gerade bei Veröffentlichung des Codes in öffentlichen Portalen oder Repositories, ein CHANGELOG.md und eine Lizenz-Datei LICENSE / oder LICENSE.md beizulegen.


Artikel bearbeiten