Ein eigenes Modul schreiben

Ein eigenes Modul zu schreiben ist nicht so schwer wie es sich anhört. Ein Modul besteht nur aus einem Ordner ("modulname") und mindestens 2 Dateien (modulname.info und modulname.module). Der Ordner wird im Verzeichnis sites/all/modules angelegt und hat den gleichen Namen wie die beiden Dateien.

Das hier verwendete Beispiel ist diesem Beitrag als ZIP-Datei zum download angehängt.

Die Datei modulname.info

Die Datei mit der Endung .info liefert die Informationen die auf der Modulübersicht im Backend ausgegeben werden. Dabei sind die Angaben "name", "description" und "core" erforderlich (6.x bedeutet dieses Modul ist für Drupal 6 gedacht).

; $Id:$
name = Modulname
description = Modul Beschreibung.
core = 6.x
Weitere Angaben z.B. "package" (Gruppe in der Modulübersicht) und "dependencies" (Abhängigkeiten) sind optional. Eine ausführliche englische Dokumentation gibts hier.

 

Die Datei modulname.module

Die Datei mit der Endung .module beinhaltet den eigentlichen Modul Code. Der folgende Code ist das Grundgerüst. Er beinhaltet nur den PHP Start-Tag. Der Zusatz // $Id$ ist Drupal Coding Standard. Er kann theoretisch weggelassen werden. Wenn man sein Modul auf drupal.org veröffentlichen will ist er aber zwingend.

<?php
// $Id$

Ein etwas funktionaleres Code-Gerüst beinhaltet einen Beispiel Hook

<?php
// $Id$

/**
* Implementation of hook_init().
*/
function modulname_init() {
  // Der hook_init wird bei jedem Seitenaufruf ausgelöst. Hier kann man
  // z.B. CSS oder JS Dateien einbinden.
  drupal_add_js( drupal_get_path('module', 'modulname') .'/modulname.js', 'theme');
  drupal_add_css( drupal_get_path('module', 'modulname') .'/modulname.css');
}

Weitere sehr nützliche Hooks sind.

  • hook_form_FORM_ID_alter
    Um die Ausgabe eines bestimmten Formulars zu verändern.
  • hook_block
    Um eigene Blöcke anzulegen.
  • hook_nodeapi
    Um in Operationen rund um Nodes einzugreifen und diese zu verändern (z.B. save, update, delete, usw.).
  • hook_menu
    Um eigene Menüeinträge, Seiten und Callbacks anzulegen.

Das unten aufgeführte Modul "Module Builder" gibt Hinweise, welche Hooks zur Verfügung stehen. Eine unverzichtbare Quelle für die Entwicklung ist auch die Drupal API.

Nützliche Links

  • Module Builder
    Dieses Modul hilf einem dabei ein Grundgerüst für ein eigenes Modul zu entwerfen. Es erzeugt die benötigten Dateien und füllt diese mit den per Checkbox ausgewählten Hooks.
  • Coder
    Das Coder Modul prüft den Code von installierten Modulen und Themes auf Form (Coding Standards) und Fehler.
  • Examples for Developers
    Dieses Modul ist eine Sammlung an hilfreichen funktionalen Beispielen. Ein einziges Tutorial sozusagen.
  • Devel
    Das Devel Modul bietet einige handliche Funktionen die bei der Entwicklung von Modulen und Themes sehr hilfreich sind. z.B. die Funktion dpm() (dpm, dpr, dsm). Damit ist es dem Admin möglich sich Objekte und Arrays komfortabel ausgeben zu lassen. Zum Beispiel in einer node.tpl.php Template Datei dpm($node);
AnhangGröße
modulname.zip947 bytes