Die Joomla Architektur

Donnerstag, 8 Dezember 2011 12:22 geschrieben von Marco Beierer

Joomla Plugins, Komponenten und Module gibt es viele. Entwickelt werden die Erweiterungen teilweise von (semi-)professionellen Entwicklern, aber auch von Hobby-Programmierern, welche für eine Aufgabenstellung oder ein Problem keine fertige Joomla Erweiterung finden können.

Um eine eigene Erweiterung zu entwickeln, ist es nicht unbedingt erforderlich, über die Architektur von Joomla Bescheid zu wissen. Mit dem Zusammenkopieren von Code aus anderen Erweiterungen lassen sich auch für Anfänger mehr oder weniger brauchbare Erweiterungen programmieren.

Sind Hintergrundinformation über die Joomla Architektur hilfreich?

Meiner Meinung nach ist es jedoch sehr hilfreich, sich vor der Entwicklung eigener Erweiterungen mit der Joomla Architektur auseinanderzusetzen. Mit diesem Hintergrundwissen ist es möglich, den Aufbau von Komponenten, Modulen und Plugins besser zu verstehen.

In diesem Artikel werde ich die Joomla Architektur auf einem sehr abstrakten Niveau beschreiben. Der folgende Text liefert daher keine konkreten Informationen zur Entwicklung eigener Joomla Erweiterungen, sollte aber als guter Einstiegspunkt in die Entwicklung unter Joomla dienen und die selbständige tiefergehende Einarbeitung in die Materie erleichtern.

Die Joomla Architektur: Übersichtsgrafik

Die Joomla Architektur

Die Framework Ebene

Die Architektur von Joomla ist schichtweise aufgebaut. Das Fundament bildet die Framework Ebene (Framework Layer). Die Framework Ebene umfasst die internen und externen Bibliotheken (Libraries), die Plugins, sowie das Joomla Framework selbst.

Bibliotheken – die kleinen Helferlein

Eine Bibliothek ist eine Sammlung von Funktionen, die den Entwickler bei der Implementierung von Erweiterungen unterstützt und dem Entwickler somit Arbeit abnimmt.

Ein anschauliches Beispiel ist eine Bildbearbeitungsbibliothek. Eine Bildbearbeitungsbibliothek unterstützt den Entwickler – wie der Name erahnen lässt – bei der Bearbeitung von Bildern. So bieten diese Bibliotheken beispielsweise meist fertige Funktionen zum Zuschneiden, Vergrößern oder Verkleinern von Bildern. Eine solche Bibliothek ist auch in der Joomla Plattform (mehr Informationen zur Plattform sind weiter unten in diesem Artikel zu finden) verfügbar.

Externe Bibliotheken können seit der Joomla Version 1.6 über den Erweiterungsmanager im Joomla Backend installiert werden. Zuvor war es nur möglich, die mit Joomla mitgelieferten Bibliotheken zu nutzen beziehungsweise Bibliotheken zusammen mit der Erweiterung auszuliefern.

Das Framework – der Kern von Joomla

Das Framework ist sozusagen der Kern von Joomla und somit der das wichtigste Element der Joomla Architektur. Es beinhaltet alle Klassen, welche in Paketen (packages) organisiert sind. Die öffentlichen Methoden des Frameworks bilden die Joomla API, welche intensiv bei der Entwicklung von Erweiterungen verwendet wird.

Ein Beispiel ist die abstrakte Klasse JDatabase und die von JDatabase erbenden Klassen JDatabaseMySQL und JDatabaseMySQLi, welche für das Management der Datenbankverbindung verantwortlich sind.

Eine vollständige Erläuterung des Frameworks würde leider den Rahmen dieses Artikel sprengen. Interessierte können jedoch mit Hilfe des API-Browsers etwas in den Klassen stöbern.

Plugins – Eingriff in das Framwork

In vielen Fällen möchte man Funktionen implementieren, welche eigentlich einen Eingriff in das Framwork erfordern. Um einen solchen Eingriff und die damit verbundenen Probleme zu vermeiden, gibt es den Plugin-Mechanismus. Dieser Mechanismus ermöglicht es, beim Auftreten vordefinierter Events, eigenen Code (definiert im Plugin) auszuführen.

Ein viel verwendetes Event ist "onPrepareContent". Dieses Event tritt vor der Vorbereitung der Inhalte (Artikel) für die Präsentation ein und wird meist zur Manipulation der Inhalte verwendet. Zum Beispiel zum Ersetzen von Platzhaltern mit dem eigentlichen Inhalt.

Der Joomla Pluginmanager

Die Anwendungsebene

Auf der Framework Ebene aufbauend findet sich die Anwendungsebene (Applikation Layer). Die Anwendungsebene besteht seit Joomla 1.6 aus drei Anwendungen, welche alle von der Framework-Klasse JApplication erben.

Die erste Anwendung ist JInstallation, welche für die Installation von Joomla verantwortlich ist. Zudem gibt es noch JAdministrator und JSite. Wie die Namen bereits vermuten lassen, ist JAdministrator für die Joomla Administrationsoberfläche und JSite für das Frontend zuständig.

Die Erweiterungsebene

Nun sind wir bei der obersten Ebene angelangt, bei welcher es für die meisten interessant wird: Der Joomla Erweiterungsebene (Extension Layer). Auf der Erweiterungsebene befinden sich die Module, Komponenten und Templates. Zusammen mit Joomla werden bereits einige dieser Erweiterungen ausgeliefert. Beispielsweise die Standardtemplates und der Medienmanager.

Wer selbst Module oder Komponenten entwickelt, arbeitet immer auf der Erweiterungsebene. Mit den darunterliegenden Ebenen sollte nur mit Hilfe der Joomla API (Application Programming Interface) kommuniziert werden.

Die strikte Trennung der Ebenen hat unter anderem den Vorteil, dass sich Änderungen an der internen Funktionsweise des Framework oder der Applikationsebene nicht auf die Funktion der Erweiterungen auswirken. Ausgenommen natürlich der Fall, dass sich die API selbst ändert.

Der Joomla Erweiterungsmanager

Die Ausgliederung der Plattform

Die Framework Ebene wurde mit dem Erscheinen von Joomla 1.7 aus dem Joomla CMS Projekt ausgegliedert und wird seitdem als eigenständiges Projekt weitergeführt. Das ausgegliederte Projekt trägt den Namen Joomla Platform und kann unabhängig vom Joomla CMS als Grundgerüst für die Entwicklung von PHP-Webanwendung genutzt werden. Aktuell ist die Plattform in der Version 11.2 verfügbar.

Weitere CMS Architektur Artikel 

Ich hoffe, ich konnte einigen mit diesem Artikel eine verständliche Einführung in die Architektur von Joomla geben. In Zukunft werde ich wahrscheinlich weitere technische Artikel über die Architektur anderer Content-Management-Systeme (CMS) schreiben. Dies soll unter anderem dazu beitragen, dass die Wahl des richtigen CMS auch mit Blick auf die Architektur getroffen werden kann.

Bilderquellen

[Die Joomla Architektur] http://docs.joomla.org/File:Joomla_Architecture.jpg

[Der Pluginmanager] http://docs.joomla.org/Help16:Extensions_Plugin_Manager

[Der Erweiterungsmanager] http://docs.joomla.org/File:ExtensionInstallation.jpg