Das erste eigene Modul

Auch für Drupal 6.x

Um ein eigenes Modul für Drupal zu erzeugen braucht es nicht viel. Grundsätzlich sollen eigene Module im Drupal-Verzeichnissystem in sites/all/modules/eigene_Bezeichnung erstellt werden. Wenn das Verzeichnis modules nicht existiert, lege es einfach an.

Wenn Module nicht für alle Seiten (bei Multisite-Systemen) benötigt werden, kann auch für eine spezielle Seite ein eingenes Verzeichnis angelegt werden. Dazu wird im Verzeichnis sites ein Unterverzeichnis mit der Bezeichnung der neuen Seite eingerichtet, z. B. sites/webauftritt2.de. Für ein eigenes Modul werden folgende Dateien benötigt:

*.txt
optional - Zur Beschreibung der Funktionen die das Modul ausführt. Zudem sollten hier nochmal Installationsvoraussetzungen und Besonderheiten erklärt werden.
*.info
zwingend - Das Info-File ist notwendig um von Drupal erkannt zu werden. Es beschreibt die Abhängigkeiten zu anderen Modulen, die Versionsnummern, Ersteller, usw.. Der Name muss innerhalb der Drupal-Anwendung eindeutig sein.
*.install
optional - Das Install-File wird bei der Erst-Installation oder bei der Deinstallation ausgeführt. In der Regel werden hierüber Datenbanktabellen bzw -inhalte angelegt, die vom Modul benötigt werden. Es können aber genauso gut System-Variablen gesetzt bzw. entfernt werden. Auch Updates können hier, als Funktion, eingefügt werden.
*.module
zwingend - Das Module-File stellt die eigentliche Funktionalität des Modules zur Verfügung. Ein Modul kann über mehrere Module-Files verfügen.

Zusätzlich können weitere Dateien notwendig sein. So können ohne Probleme .inc-Dateien oder eigene CSS-Dateien eingebunden werden. Schaut man sich das Modulverzeichnis an:

Wie man sieht ist hier nur eine Standard-Installation ohne zusätzlich Module. Im ersten Versuch geht es nur darum, ein Modul zu schreiben das in das Admin-Menü eingeblendet wird und eine Ausgabe generiert.
Das Modul soll noch nichts großartiges veranstalten. Das erste Modul soll "ersterinhalt" heißen.

Das .info-File

Auch für Drupal 6.x

Das .info-File kann mit jedem Editor geschrieben werden. Ich benutze die Freeware-Version von PHP-Designer von MK-Soft. Damit erstelle ich auch alle anderen Scripte (wenn nicht weise ich darauf hin). Das .info-File folgt der .ini-Syntax. Genaueres kann man unter php.net erfahren. Die genaue Definition ist unter Drupal-Info-File-Beschreibung nachzulesen. Hier das wichtigste: Das File beginnt mit der Beschreibung ; $Id$ Das ungewöhnliche daran ist das die Komentare mit ein ; eingeleitet werden. Nach dem ; folgt die erste Erklärung, diese beginnt und endet mit einem $. Hier ein Beispiel:

; $ Id: ersterinhalt.info, UwBach, 2008/04/14 $
name = ersterinhalt
description = Erzeugt einen Eintrag im Admin-Menue
package = "AA"
version = "$Name$"
project = "Uwe_Test"
datestamp = "1207381502"

Nun noch einige Erklärungen zu den einzelenen Punkten:

name
Der Name des Modules - Pflichtangabe. Hier muss eine "computerfreundliche" Schreibweise gewählt werden. Die Bezeichnung wird sich durch alle weiteren Code-Bestandteile ziehen, wählt daher eine eindeutige und einfache Bezeichnung. Es dürfen keine Leerschritte, Zahlen oder Sonderzeichen drin vorkommen, Ausnahme der Unterstrich. Nur der erste Buchstabe darf groß geschrieben werden.
description
Die Beschreibung in einer Zeile (max. 255 Zeichen) - Pflichtangabe. Vermeide bitte Anführungsstriche, egal ob einfache oder doppelte
dependencies
Abhängigkeiten - optional. Hier können Abhängigkeiten zu anderen Modulen beschrieben werden. Wichtig ist das um die Funktionen eigener Module zu gewährleisten, falls man diese im eigenen Code aufruft. Das Modul läßt sich dann erst aktivieren, wenn die beschriebenen Module im Administrationsbereich zur Verfügung stehen und aktiviert sind.
package
Zuweisen des eigenen Moduls zu einem bestimmten Package - optional. Im Beispeil ist das Package "AA" gewählt worden um es in der Administrationsobfläche ganz oben zu positionieren.
version
Versionsangabe des Moduls. Die richtige Versionsnummer wird von "Drupal.org" vergeben, wenn das Modul hochgeladen wird. Dann sollte der Name $Name$ sein. Wird das Modul nicht hochgeladen kannst du machen was du willst.
project
nur für "Drupal.org". Das bitte nicht verwenden. Bei bedarf wird Drupal.org diese Bezeichnung für den Update bestimmter Packages verwenden.
datestamp
Der Zeitpunkt der Erstellung (Unix-Timestamp)
Für Drupal 6 ist ein weiterer Eintrag notwendig. Es muss noch das System angegeben werden für das das Modul gedacht ist. Es ist dabei erlaubt die nur die Hauptversion zu kennzeichnen und die Unterversion als x anzugeben, z. B. core = 6.x. ; $ Id: ersterinhalt.info, UwBach, 2008/04/14 $
name = ersterinhalt
description = Erzeugt einen Eintrag im Admin-Menue
package = "AA"
version = "$Name$"
project = "Uwe_Test"
datestamp = "1207381502"
core = 6.x

Jetzt ist alles bereit und wir können ein Verzeichnis anlegen - sites/all/modules/ersterinhalt. Darin wird unsere Datei unter dem Namen ersterinhalt.info abgespeichert. Das war der erste Schritt ...

Das .module-File

Auch für Drupal 6.x

Der nächste Schritt ist das .module-File zu erstellen. In diesem File sind alle Funktionen abgelegt. Um einen Eintrag im Administration-Menü zu erstzeugen brauchen wir nicht viel: <?php // $ID$
/**
* @file
* Irgendeine Beschreibung
*/  
Den Snipsel speichern unter ersterinhalt.module und fertig. Das Script muss natürlich wieder im Verzeichnis sites/all/modules/ abgespeichert werden.

Ruft man jetzt den "Administer -> Site building -> Modules" (h t t p://.../admin/build/modules) auf, sieht man schon das neue Modul.

Natürlich haben wir noch keine Funktionalitäten zur Verfügung und guter Stiel ist das auch nicht.
Es gibt hier aber schon einige Besonderheiten zu sehen. So wird die Datei, wie bei PHP-Scripten üblich mit <?php eröffnet, allerdings fehlt das schließende Tag ?>. Der erste Dokumentationsblock /** muss eine Leerzeile zur //$Id$ haben.
Des weiteren soll genau ein Leerschritt in den folgenden Zeilen zwischen dem Zeilenbeginn dem * und ein Leerschritt zur Beschreibung eingehalten werden.
Das ist wieder nur dann erforderlich, wen ggf. mal ein Script an "Drupal.org" gegeben werden soll. Hierfür ist auch das Tag @file gedacht. Es sollte schon darauf geachtet werden, es kann sonst zu Problemen mit bestimmten Includes führen (siehe Drupal.org).

Aber nun soll es darum gehen Inhalte in das .module-File zu bringen. Dafür muss ich etwas weiter ausholen ...

Zum Nachmachen ist das Beschriebene im Anhang ..

AnhangGröße
ersterinhalt.zip630 Bytes