Drupal Module programmieren - Autotag Teil 1 (Dateistruktur)

Module sind das Herzstück des Content Management Systems Drupal. Nach der reinen Installation ist das CMS erstmal leer und langweilig. Es sind die Module, die Leben in die Sache bringen. Auch wenn die Drupal Community unzählige extrem nützliche Module zur Verfügung stellt, kommt es schonmal vor, dass man vergeblich sucht, aber nicht das richtige findet. In dem Fall kommt man nicht darum herum, ein eigenes Modul zu programmieren. Zum Glück ist das einfacher als man denkt. Wer Kenntnisse in PHP und SQL hat, sollte keine Probleme damit haben. Eigentlich muss man nur lernen, sich eine handvoll von Drupal zu Verfügung gestellter Funktionen zu nutze zu machen, und ein paar Grundregeln zu beachten. Die erste davon betrifft die Dateistruktur.

Im Laufe der folgenden Tutorials will ich ein Modul erstellen, das einem Artikel automatisch Tags hinzufügt, wenn der Ersteller des Artikels vergessen hat, diese anzugeben. Die Idee und Umsetzung des Moduls stammt nicht von mir, sondern ist aus diesem Artikel. Das Schöne an diesem Beispiel ist, dass es trotz seiner Schlankheit die wichtigsten Aspekte der Modulprogrammierung darstellt, nämlich das Erstellen eines administrativen Bereichs und das Einhaken in andere Module. Hat man diese beiden Dinge verstanden, steht der eigenen Kreativität nichts mehr im Wege.

Dateistruktur

Hat man sich entschlossen ein Modul zu programmieren, muss man einen Ordner für das Modul anlegen. Der sollte auf dem Webspace im Ordner "modules" liegen, der sich bei einer normalen Installation unter "sites/all/" befindet. Bei einer Multisite Installation kann der Ordner auch unter "sites/[domainname]" zu finden sein. Wer sehr ordentlich sein will, kann innerhalb des modules Ordners noch einen Unterordner anlegen, um seine eigenen Module von den Community Modulen zu trennen. Im Grunde ist es egal, wie die Ordnerstruktur innerhalb des "modules" Ordners aussieht. Eigentlich braucht man nichtmal eine Ordnerstruktur: Drupal wird anhand der Moduldateien das Modul und alle zugehörigen Dateien korrekt identifizieren.

Wir legen also einen Ordner namens "autotag" an. Jetzt benötigen wir auf jeden Fall zwei Dateien:

  • autotag.info
  • autotag.module

Wie der Name schon impliziert, ist die autotag.info Datei dazu da, um Drupal alle nötigen Metainformationen über das Modul zu liefern, während die autotag.module die Aufgabe hat, den tatsächlichen Modul-Code zu liefern.

Die INFO-Datei

Unsere Info-Datei sieht so aus:

; $Id$
name = Autotag Nodes
description = Automatically inserts tags using the token module
core = 6.x
dependencies[] = taxonomy
dependencies[] = token
package = KYAM Studios

Das $Id$ Zeichen am Anfang ist ein Platzhalter für das CVS von Drupal. Hier wird beim Einreichen des Moduls in das Modul Repository von Drupal automatisch alles notwendige eingefügt. Habt ihr nicht vor, das Modul einzureichen, kann der Tag trotzdem da stehen bleiben. Danach wird eine "name" definiert. Dies ist der Titel des Moduls, wie er später in der Modul-Liste erscheinen wird. Genauso verfährt es sich mit "description" und "package". Description ist die Beschreibung, die neben dem Modul-Namen steht und package ist die Gruppierung des Moduls auf der Modulseite und kann genutzt werden um verschiedene Module, die zusammenwirken können, in einem Paket anzubieten.

Wichtiger in Bezug auf Funktionalität sind die Punkte core und dependencies[]. Core gibt an, für welche Drupal-Version das Modul geschrieben wurde. Da Major-Releases von Drupal nicht abwärtskompatibel sein müssen, ist das notwendig. 6.x bedeutet also, dass das Modul für den Drupal Core Version 6 geschrieben wurde und dass es egal ist, mit welcher Unterversion von Drupal 6 das Modul genutzt wird.

Dependencies legt fest, von welchen weiteren Modulen das Modul abhängt. In unserem Fall sind das die beiden Module taxonomy und token. Diese Angabe sorgt dafür, dass sich unser Modul später nur aktivieren lässt, wenn diese beiden Module ebenfalls aktiviert werden oder es bereits sind. Dies ist sehr hilfreich um mögliche Fehler im Voraus auszuschließen und eine korrekte Interoperabilität zu gewährleisten.

Weitere Dateien

Mit der Module-Datei werden wir uns im nächsten Artikel beschäftigen. Was noch gesagt werden muss ist, dass man natürlich beliebig viele Dateien im Modul-Ordner erstellen kann. Z.B. kann man Funktionen auslagern in zusätzliche PHP-Files oder man erstellt sich CSS-Stylesheets und verwendet diese. Auch Unterordner sind möglich. Man kann sich wirklich austoben und den Modul-Ordner strukturieren wie man möchte. Die einzigen beiden Dateien, die vorhanden sein müssen sind die Module und die Info Datei.