»Neue Ideen sind nur durch ihre Ungewohntheit schwer verständlich.« Franz Marc
39 Mein erstes Modul
Wie Sie bereits gesehen haben, bietet Joomla! von »Natur« aus eine große Fülle an Funktionalität. Wo diese nicht ausreicht, kann man sich Erweiterungen zu allen möglichen und unmöglichen Aufgaben aus dem Netz holen und installieren. Gibt es da überhaupt noch Bedarf, eigene Extensions zu schreiben? Die Antwort ist ganz klar: ja.
- Ein wesentlicher Grund ist, dass Sie Joomla! in den meisten Fällen nicht im luftleeren (Software-)Raum verwenden, sondern in einem Arbeitskontext, in dem viele andere Programme für die Erfüllung von Aufgaben verwendet werden und Daten produzieren. Wollen Sie aus Joomla! heraus an diese Daten kommen, so brauchen Sie eine eigene Lösung.
- Noch immer gibt es genügend Funktionen, die noch nicht in Extensions verpackt sind. Open-Source-Programmierer sind wie alle anderen Menschen auch viel beschäftigte Leute, die nur das machen, was sie für sinnvoll erachten. Dabei sehen sie die Dinge oft aus einem eigenen Blickwinkel, der für Sie wichtige Funktionen möglicherweise nicht berücksichtigt.
- Auch bei schon bestehenden Erweiterungen ist es oft genug der Fall, dass diese nicht fertiggestellt wurden oder zumindest nicht über die Alpha-Phase hinauskommen. Oder Sie vermissen eine Funktion, die das ursprüngliche Team vergessen hat. Um hier eingreifen zu können, müssen Sie zumindest einen Überblick darüber haben, wie man Erweiterungen programmiert.
- Nicht zuletzt ist Joomla! ein Open-Source-Programm, das davon lebt, dass sich Menschen freiwillig an der Weiterentwicklung beteiligen. Die Programmierung von Erweiterungen ist dazu ein guter Einstieg. Joomla! wurde unter anderem dadurch so beliebt, dass es eine große Fülle von Plug-ins, Modulen und Komponenten gibt. Vielleicht fühlt sich der eine oder andere Leser auch dazu berufen, seinen eigenen Beitrag zu dieser Erfolgsgeschichte zu leisten.
Um eigene Erweiterungen schreiben zu können, benötigen Sie zumindest grundlegende Programmierkenntnisse, am besten in PHP. Sie sollten Ahnung von HTML haben, und auch ein Grundverständnis von XML kann sicherlich nicht schaden. Diese Kenntnisse hier zu vermitteln, würde den Rahmen dieses Buches sprengen, es sei deshalb auf die einschlägige Fachliteratur verwiesen.
Die Joomla!-Gemeinde begrüßt es ausdrücklich, wenn sich Entwickler die Mühe machen, neue Funktionen zu programmieren. Um es den Programmierern möglichst einfach zu machen, gibt es standardisierte Vorgehensweisen, um Erweiterungen mit der Core-Software zu verbinden.
Joomla! selbst ist in der Sprache PHP geschrieben. Es liegt daher nahe, dass auch die Erweiterungen in dieser Sprache entwickelt werden müssen. Zusätzlich gibt es eine Beschreibung der Erweiterung, die im XML-Format vorliegen muss. Beide Bereiche, das PHP-Skript und die XML-Datei, müssen bestimmten Konventionen folgen und in den richtigen Verzeichnissen liegen, um von Joomla! erkannt zu werden.
Eigentlich sind Module, Plug-ins und Komponenten PHP-Skripte oder -Sammlungen, die während der Ausführung von Joomla! an bestimmten Stellen aufgerufen werden. Daher hat man auch Zugriff auf einige Standardfunktionen, die das System bereitstellt. Diese Funktionen werden unter dem Begriff Joomla!-API (Application Programming Interface) geführt und stellen eine Schnittstelle zwischen der Erweiterung und dem eigentlichen System dar.
Wenn Sie Erweiterungen entwickeln wollen, die auch für andere Joomla!-User gedacht sind, so ist es sinnvoll, sich an die Coding Standards von Joomla! zu halten. Das betrifft die Formatierung des Quelltextes sowie die Art und Weise der Kommentierung. Die Joomla!-Entwickler halten sich dabei an den Standard der PEAR-Entwickler (eine große PHP-Bibliothek), den Sie unter der URL pear.php.net/manual/en/standards.php finden.
Der Code in den folgenden Beispielen ist aus Gründen der Übersichtlichkeit auf die Funktionalität beschränkt und nicht auf Sicherheit optimiert. Hier klaffen weite Lücken für Eindringlinge. Sie sollten Ihre eigenen Skripte auf alle Fälle in dieser Hinsicht prüfen. Insbesondere sollten Sie alle Zeichenketten, die aus Parametern kommen, auf schadhaften Code überprüfen.
Aber genug der Vorrede. Sehen wir uns einmal ganz praktisch an, wie man beispielsweise ein eigenes Modul erstellt. Die Listings für dieses und die folgenden beiden Kapitel finden Sie auf der DVD im Verzeichnis listings.
39.1 Tools 

Um für Joomla! zu entwickeln, reicht im Prinzip ein einfacher Editor. Wenn Sie schnell loslegen wollen, können Sie also diesen Abschnitt getrost überspringen. Wollen Sie allerdings etwas mehr Komfort, ist es ratsam, mit einer Entwicklungsumgebung für PHP zu arbeiten. Diese markiert Ihren Code farbig, hilft Ihnen bei der Fehlersuche und ist in der Lage, Funktionen und Objekte zu erkennen und Ihnen die verfügbaren Elemente zu zeigen. Entwicklungsumgebungen gibt es sehr viele. Wir wollen Ihnen hier Eclipse vorstellen, eine freie Variante, die sehr weit verbreitet ist. Eclipse ist eigentlich nur ein Rahmenprogramm, mit dem sehr viele verschiedene Programmiersprachen bearbeitet werden können. Standardmäßig bringt die Entwicklungsumgebung eine Unterstützung nur für Java mit. Um sie mit PHP zu verwenden, müssen Zusatzpakete installiert werden.
Das Projekt PDT (PHP Developer Tools) bietet eine vorkonfigurierte Zusammenstellung solcher Tools. Sie finden das Archiv auf der DVD unter tools/pdt. Entpacken Sie den Inhalt auf Ihrer Festplatte. Es ist keine weitere Installation nötig. Sie starten Eclipse mit einem Doppelklick auf eclipse.exe. Beim ersten Start werden Sie gefragt, wo Ihr Standard-Workspace sein soll. Das ist der Ort, wo Eclipse seine eigenen Dateien hinterlegt. Geben Sie hier ein Verzeichnis innerhalb von xampp/htdocs an, beispielsweise xampp/htdocs/joomla_development. Wenn Sie auf OK klicken, öffnet sich der Willkommensbildschirm des Programms. Diesen können Sie über das X auf dem Reiter links oben schließen. Jetzt sind Sie in der Programmieransicht.
Kodierung |
Stellen Sie sicher, dass Ihre Programmdateien im UTF-8-Format gespeichert werden. Gehen Sie dazu über das Menü Window • Preferences… zu den Einstellungen. Öffnen Sie über die Baumansicht links den Bereich General • Workspace. Im Bereich Text file encoding aktivieren Sie Other und wählen UTF-8. |
Entwicklungsumgebungen arbeiten immer mithilfe sogenannter Projekte. Diese verwalten alle zugehörigen Dateien, wissen, woran Sie zuletzt gearbeitet haben, und kennen den Kontext. Erstellen Sie ein neues Projekt über File • New • Project…
Abbildung 39.1 Ein neues Projekt erstellen
Wählen Sie im Dialogfenster im Bereich PHP den Punkt PHP Project, und klicken Sie auf Next > (Abbildung 39.1). Geben Sie im folgenden Fenster als Project name »joomla_module« ein, und klicken Sie wiederum auf Next >.
Abbildung 39.2 Der Projektname
Im nun folgenden Fenster können Sie zusätzliche Pfade angeben. Das ist nicht zwingend nötig. Bei der Programmierung für Joomla! ist es aber für die Code-Vervollständigung sinnvoll, das Wurzelverzeichnis von Joomla! mit einzubinden. Öffnen Sie den Reiter Libraries, und klicken Sie auf Add External Folder… Hier wählen Sie den Ordner, in dem Ihr Joomla! liegt, z. B. c:\apachefriends\xampp\htdocs\joomla.
Abbildung 39.3 Joomla! mit einbinden
Mit einem Klick auf Finish wird das Projekt erstellt. Wenn alles geklappt hat, sollten Sie jetzt im PHP Explorer einen Baum sehen, der so wie in Abbildung 39.4 aussieht.
Abbildung 39.4 Unser Joomla!-Projekt
Am besten organisieren Sie Ihr Projekt so, dass Sie für jedes Modul einen eigenen Unterordner erstellen. Klicken Sie dazu am einfachsten mit der rechten Maustaste auf joomla_module, und wählen Sie New • Folder. Geben Sie für das erste Testmodul im Feld Folder name »mod_hallojoomla« ein. In diesem Ordner brauchen wir im Folgenden mehrere Dateien. Das geht so: Klicken Sie mit der rechten Maustaste auf den Ordner mod_hallojoomla. Wählen Sie New • PHP File. Im Feld File Name geben Sie den Namen der Datei ein, z. B. mod_hallojoomla.php. Mit einem Klick auf Finish wird die Datei erstellt, die Sie in Abbildung 39.5 sehen können.
Abbildung 39.5 Eine neue PHP-Datei
Hilfestellung (Code Completion) |
In Abbildung 39.5 sehen Sie ein Hilfefenster, das zur Funktion passt, die gerade eingegeben wird. Dieses Fenster ist sehr hilfreich und kann mit der Tastenkombination ![]() ![]() |