Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Joomla! von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das Handbuch für Einsteiger
Buch: Joomla!

Joomla!
496 S., mit CD, 29,90 Euro
Galileo Computing
ISBN 3-89842-632-7
gp Kapitel 20 Eigene Erweiterungen schreiben
  gp 20.1 Hallo Joomla!
  gp 20.2 Die API nutzen
  gp 20.3 Parametrisieren
  gp 20.4 Auf die Datenbank zugreifen
  gp 20.5 Unterschiedliche Layouts mit Templates

Kapitel 20 Eigene Erweiterungen schreiben

Wie wir bisher 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.

gp  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! an diese Daten kommen, so brauchen Sie eine eigene Lösung.
gp  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.
gp  Auch bei schon bestehenden Erweiterungen ist es oft genug der Fall, dass diese nicht fertig gestellt wurden oder zumindest nicht über die Alpha-Phase hinaus kommen. Oder Sie vermissen eine Funktion, die das ursprüngliche Team vergessen hat. Um hier eingreifen zu können, müssen Sie zumindest einen Überblick haben, wie man Erweiterungen programmiert.
gp  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 Mambots, Modulen und Komponenten gibt. Vielleicht sieht 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 des 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, Mambots 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 CD im Verzeichnis Listings.


Joomla! 1.1: Die Codebasis der neuen Joomla!-Generation wird an einigen Stellen grundlegend überarbeitet. Die Struktur bleibt jedoch zunächst abwärtskompatibel, so dass Erweiterungen, die mit den hier beschriebenen Mitteln erstellt werden, generell noch lauffähig sein werden. Wollen Sie jedoch bei der Programmierung schon auf zukünftige Versionen achten, so sollten Sie einen Blick in die Referenz im Anhang A werfen. Dort finden Sie zu den Befehlen, die wir im Folgenden verwenden, die Entsprechungen für die Joomla! 1.1+-Codebasis.


Galileo Computing

20.1 Hallo Joomla!  toptop

Unser erstes Projekt soll, wie könnte es anders sein, die Ausgabe von »Hallo Joomla!« in einem Modul realisieren. Dazu benötigen wir zwei Dateien, die Sie am besten in einem separaten Verzeichnis erstellen:

gp  mod_hallojoomla.php ist die eigentliche Programmdatei.
gp  mod_hallojoomla.xml wird für die Installation und eventuelle Parameter auf der Einstellungsseite benötigt.

Die PHP-Datei, die ja zunächst nichts anderes machen soll, als eine Ausgabe zu produzieren, kann so aussehen:

1  <?php
2  defined( '_VALID_MOS' ) or die( 'Direct Access to this
3     location is not allowed.' );
4  echo '<h1>Hallo Joomla!</h1>';
5  ?>
Listing 20.1   mos_hallojoomla.php

Nachdem in Zeile 1 PHP aktiviert wurde, wird in Zeile 2 und 3 sichergestellt, dass die Datei nur im Rahmen von Joomla! und nicht als eigenständiges Programm aufgerufen wurde. Ist dies nicht der Fall, wird die Ausführung mit einer Meldung abgebrochen. Diese Zeile steht in fast allen Skripten, die zu Joomla! gehören. Zeile 4 enthält die eigentliche Ausgabe, die durch den echo-Befehl geschrieben wird. Die Zeichenfolge, die ausgegeben werden soll, steht dahinter in Hochkommas. Sie sehen, dass wir hier gegebenenfalls auch die HTML-Tags mit ausgeben müssen.

Nun benötigen wir noch eine Definitionsdatei, damit das Modul auch als solches erkannt wird. Diese Datei kann folgendermaßen aussehen:

1  <?xml version="1.0" encoding="iso-8859–1"?>
2  <mosinstall type="module" version="1.0.0">
3    <name>Hallo Joomla</name>
4    <author>Markus</author>
5    <creationDate>February 2006</creationDate>
6    <copyright>(C) 2006 Markus</copyright>
7    <license>http://www.gnu.org/copyleft/gpl.html</license>
8    <version>0.1</version>
9    <description>Gibt "Hallo Joomla!" aus</description>
10   <files>
11     <filename module="mod_hallojoomla">ð
12        mod_hallojoomla.phpð
13     </filename>
14   </files>
15   <params />
16 </mosinstall>
Listing 20.2   mos_hallojoomla.xml

Zeile 1 gibt an, dass es sich bei dem folgenden Dokument um eine XML-konforme Datei handelt. Wie Sie sehen, sind XML-Dokumente ähnlich wie HTML in Tags (Elementen) strukturiert. XML-Dokumente benötigen zwingend ein einziges Wurzelelement, dem alle anderen Elemente untergeordnet sind. Dieses ist in unserem Fall das Tag <mosinstall>, das als Parameter den Typ der Erweiterung (module) sowie die Joomla!-Version enthält, für die das Modul geschrieben wurde. Es folgt eine Reihe von Metainformationen, die das Modul beschreiben.


Tabelle 20.1   Metainformationen für ein Modul

Code Metainformation
<name> Name der Erweiterung, so wie er im Backend im Manager angezeigt wird.
<author> Autor der Erweiterung.
<authorEmail> E-Mail-Adresse, unter der der Autor erreichbar ist.
<authorUrl> Adresse der Homepage des Autors.
<creationDate> Erstellungsdatum. Das Zeitformat spielt hier keine Rolle.
<copyright> Wer hat die Urheberrechte an der Erweiterung?
<license> Geben Sie hier an, unter welcher Lizenz die Erweiterung steht. Es bietet sich an, sie unter die GNU GPL zu stellen, unter der auch das Kernsystem steht.
<version> Versionsnummer der Erweiterung. Es hat sich eingebürgert, ungerade Nummern für Entwicklungsversionen (»testing«) und gerade für fertige Versionen (»stable«) zu verwenden.
<description> Versuchen Sie, an dieser Stelle das Modul kurz und möglichst aussagekräftig zu beschreiben. Die Beschreibung wird nach der Installation und auf der Eigenschaftsseite angezeigt.


Hinweis: Wie Sie in der Beispieldatei sehen, ist es nicht nötig, immer alle Informationen anzugeben. Wichtig ist nur, dass der Name der Erweiterung festgelegt wird.

Der Abschnitt <files> listet alle Dateien auf, die zum Modul gehören. Diese Angabe ist nötig, damit Joomla! bei der Installation weiß, welche Bestandteile kopiert werden müssen. Jede Datei wird von einem <filename>-Tag umschlossen. Das eigentliche Modul-Skript wird mit dem Attribut module="mod_ hallojoomla" gekennzeichnet. Das ist bei anderen Files nicht nötig.

Das letzte Tag, <params>, beschreibt eventuelle Optionen, die Sie auf der Eigenschaftsseite des Moduls festlegen können. In unserem Beispiel bleibt es leer. Eine nähere Beschreibung finden Sie weiter unten in diesem Kapitel.


Achtung: Achten Sie darauf, dass die Zeilen 11, 12 und 13 in Ihrer Datei in einer Zeile stehen. Ansonsten wird der Dateiname nicht richtig erkannt. Wir haben das hier nur aus Gründen der Übersichtlichkeit geändert.

Rufen Sie nun im Backend die Modul-Installation auf (Installers · Modules). Sie haben jetzt zwei Möglichkeiten. Im Bereich Install From Directory können Sie den Pfad zu den Modul-Dateien eingeben und dann auf Install drücken. Oder Sie fügen die beiden Dateien in ein Zip-Archiv mit dem Namen mod_hallojoomla.zip ein. Jetzt können Sie das Modul im Bereich Upload Package File mit Durchsuchen aufrufen und dann mit Upload & Install installieren. Beide Methoden haben Vor- und Nachteile. Während Sie den Pfad bei der ersten Variante auswendig wissen müssen, ist es im zweiten Fall bei jeder Änderung nötig, das Zip-Archiv neu zu erzeugen.

Nachdem das Modul installiert ist, können Sie es im Modul-Manager aktivieren. Es wird standardmäßig an die Position »left« gestellt. Rufen Sie die Seite im Frontend auf, und bewundern Sie Ihr Werk.


Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 20.1   Das erste eigene Modul


Bei der Installation sind zwei Dinge passiert. Zunächst wurden die beiden Dateien, die das Modul darstellen, in das Verzeichnis joomla/modules kopiert. Dann wurde in der Datenbank in der Tabelle jos_modules ein Eintrag erstellt, der die Informationen enthält, die Sie im Modul-Manager einstellen können. Einige dieser Informationen wurden aus der XML-Datei übernommen, so z.  B. der Modul-Titel.

Wenn Sie nur Änderungen an der Programmdatei vornehmen wollen, so können Sie in Zukunft direkt joomla/modules/mod_hallojoomla.php bearbeiten. Das geht allerdings nicht, wenn das Modul einen neuen Namen bekommt.

 << zurück
  
  Zum Katalog
Zum Katalog: Joomla!
Joomla!
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Joomla! 1.5 für Einsteiger






 NEU: Joomla! 1.5 -
 für Einsteiger


Zum Katalog: Einstieg in Joomla! - Das Video-Training






 Einstieg in Joomla! -
 Das Video-Training


Zum Katalog: CSS-Layouts






 CSS-Layouts


Zum Katalog: Webseiten erstellen für Einsteiger






 Webseiten erstellen
 für Einsteiger


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-Optimierung
 für Webentwickler


Zum Katalog: Professionelles Webdesign mit (X)HTML und CSS






 Professionelles Webdesign
 mit (X)HTML und CSS


Zum Katalog: Einstieg in osCommerce/xt:Commerce






 Einstieg in
 osCommerce/xt:Commerce


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de