Erstellung eines Drupal 7 Moduls

Die Funktionalität von Drupal lässt sich über Module erweiterten. Ein Modul besteht aus PHP Code und Konfigurations-Dateien für die Drupal API.

Ein Drupal Modul besteht mindestens aus

  1. einem Ordner (Modul-Ordner)
  2. einer .info (Konfiguration für die Drupal API)
  3. einem .modul Datei (Implementierung der Funktionalität in php )

Diese Dateien werden von Drupal über vordefinierte Pfade gesucht ( z.B. Path „/sites/all/modules“ ) .

Drupal Modul Ordnerstruktur

Danach können sie über das Drupal Modul-Administrationsmenü (#overlay=admin/modules) aktiviert werden.

Drupal stellt eine sehr umfangreiche Programmier-API bereit. Es gibt viele Drupal-System-Funktionen und sogenannten Hooks, die die Entwicklung von Drupal-Modulen sehr effizient und flexibel machen. Eine Referenz hierzu ist unter http://api.drupal.org/api/drupal zu finden.

Hooks

Drupal stellt über seinen eingebauten Hook-Mechanismus die Möglichkeit bereit, sich an vordefinierten Stellen in die Verarbeitung eines Requests durch Drupal einzuhängen. D.h. Drupal sieht nach, ob ein Modul bestimmte Funktionen implementiert und führt diese während des Requests aus. Falls das Modul die Funktion _user_login(&$edit, $account) implementiert, wird diese ausgeführt sobald sich ein Benutzer an dem System anmeldet.

Beispiel für ein Drupal Modul:

Das Beispiel Modul soll einen Benutzer mit einer Nachricht begrüßen, sobald dieser sich eingeloggt hat. Name des Moduls soll „greating“ sein.

Zuerst wird ein Ordner mit der Bezeichnung „greating“ angelegt. In diesem Ordner wird ein File erstellt, der den Namen greating.info trägt und den folgenden Inhalt hat:

;$id$
name = „Benutzer Begrüßung“
description = „Begrüßt die Benutzer nach dem login“
core = 7.x
php = 5

Die erste Zeile ist ein Platzhalter für das zentrale-Versionsmanagement von Drupal. Danach folgt die Angabe des Namens sowie der Beschreibung des Moduls. Diese Angaben werden auf der Modul-Administrationsseite ausgegeben.

Drupal Modul Administration

Die „core“ und „php“ direktive geben an ab welcher PHP Version bzw. für welche Drupal Version das Modul genutzt werden kann.
Die Funktion des Drupal Moduls wird nun über den .modul File implementiert. Nach den Drupal coding Standards, welche unter http://drupal.org/coding-standards zu finden sind, wird zuerst eine API Dokumentation hinzugefügt.

≤?php
// $id$
/**
*@file
* Sends A Wellcome Message to a User after Login.
*/

Die .module Datei ist eine normale php-Datei, beginnend mit einem öffnenden ≤?php Tag. Nach den Drupal Coding Standards wird das php-End-Tag ab Version 4.7 absichtlich ausgelassen.

Die Zeile // $id$ ist wieder ein Platzhalter für die Versionsverwaltung.
Die @file Dokumentation-Prozessor Direktive gibt an, dass es sich um eine Beschreibung für die gesamte Datei handelt.

Des Weiteren kann über die Direktive @see eine Verlinkung durch den Dokumentation-Prozessor erstellt werden. So können hierüber Verlinkungen zu API-Informationen wie zum Beispiel Funktions-, Konstanten-, Variablen-Informationen oder zu einer angegeben URL geschaffen werden.

Nun kommen wir zur Implementierung der Funktion unseres Moduls:

/*
* Implementation of hook_user_login(&$edit, $account)
*/
function greating_user_login(&$edit, $account){

//Benutzer begrüßen
drupal_set_message(‘Hallo :’.$account->name);
}

Beispiel Modul downloaden

Kommentare

Ein schönes kurzes Tutorial zu einem Thema, was viele oft abschreckt. Jedoch, eine kleine Anmerkung zu // $id$
Wenn ich nicht ganz falsch liege, dann ist das noch ein Überbleibsel aus den csv-Zeiten und wird seit der Umstellung auf Git nicht mehr benötigt.

viele Grüße

Helrunar

Hallo Helrunar,

vielen Dank. Ja das stimmt, das // $id$ Tag wird nicht nur nicht mehr benötigt es soll seit der Git migration entfernt werden.

Git Migration $ID Tags

Schöne Grüße
Thomas

Neuen Kommentar schreiben

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
CAPTCHA
Diese Frage testet ob Sie ein Mensch sind und ist zum Schutz vor automatisierten Spam.
Image CAPTCHA
Geben Sie Buchstaben ein die das Bild zeigt.