Drupal – Grundlegendes zur Modulerstellung
Development Module
Grundsätzlich benötigt man zur professionellen Entwicklung von Modulen das Modul Devel, das hilfreiche Development Tools wie Cache Management, SQL Debugging oder einen Modul Reinstaller beinhalten. Das Modul Coder ist einem dabei behilflich die Coding Standards von Drupal einzuhalten.
Dokumentationen
Coding Standards: http://drupal.org/coding-standards
Aufsetzen einer Drupal Entwicklungsumgebung: http://drupal.org/node/147789
Drupal API: http://api.drupal.org
Module
Ein Modul besteht aus mindestens zwei Dateien, einer Datei, die den PHP Code beinhaltet (modulname.module) und einer Datei mit allgemeinen Informationen (modulname.info).
modulname.info
;$Id$;
Ist für den Drupal SVN Server notwendig
name = “Modulname“
description = “Modulbeschreibung“
;Drupalversion
core = 6.x
;PHP Version
;php = 5.1
;Wenn man seine Module gruppiert im Menü vorfinden möchte:
;package = “Packetname“
modulname.module
<?php
//$Id$
/**
*@file
*Description
*@see Hier können Variablen, Funktionen, Hyperlinks etc. stehen, die weitere
* Informationen zum Modul angeben
*/
#PHP Code
#hooks
?>
Was sind Hooks?
Hooks sind Funktionen, die von Drupal automatisch aufgerufen werden, wenn sie einem bestimmten Namen (modulename_hookname) entsprechen. Das im Core intergrierte Kommentarmodul beispielsweise beinhaltet die Funktion comment_user() . Wir könnten also in unserem eigenen Modul eine Funktion meinmodulname_user() implementieren und hier benutzerspezifische Abläufe definieren. Hooks werden oftmals auch Callback Funktionen genannt, sind aber eigentlich keine, da sie nur aufgrund der entsprechenden Namenskonvention und nicht durch einen Listener erstellt werden. Auf http://api.drupal.org/api/6 findet ihr alle Drupal Hooks. Wenn ihr euch für die Funktion interessieren solltet, die für den Hook Mechanismus verantwortlich ist, dann könnt ihr euch die Funktion module_invoke_all() in der Datei module.inc genauer ansehen.
Translation-Funktion
Wenn ihr euer Modul auch mehrsprachig nutzen wollt, dann solltet ihr alle Strings in die t() Funktion packen z.B.:
drupal_set_message(t('Your entry has been saved.'));
Jetzt kannst du über das System den String in eine andere Sprache übersetzen.
Datenbank
Müsst ihr für euer Modul Daten in der Datenbank speichern, benötigt ihr eine weitere Datei (modulname.install), welche die notwendigen Funktionen z.B. für die Erstellung einer neuen Tabelle beinhalten kann. Hier existieren ebenfalls hilfreiche Hook Funktionen (hook_install, hook_uninstall, hook_schema).
Bitte aber in der t() Funktion den engl. Text einfügen :D.
Unter http://www.addison-wesley.de/main/main.asp?page=aktionen/bookdetails&ProductID=168430 kann man sich die deutsche Übersetzung von John K. VanDyks Drupal-Entwicklerhandbuch kaufen. Ist nicht schlecht, aber man hätte sich mehr Mühe bei der Übersetzung geben können. Weil man das Gefühl hat, dass echt Wort für Wort übersetzt wurde.
Danke für die Korrektur.
Sicherlich auf Englisch. Ich bessere es schnell mal aus.
Was mir eben eingefallen ist: Wenn man ein Modul programmiert, das für alle Drupal Versionen gültig ist, dann hat man ein kleines Problem, denn es ist nicht möglich in der modulname.info einen Wert mitzuliefern, der besagt, dass das Modul ab- oder aufwärtskompatibel ist. Zumindest ist mir keine Möglichkeit bekannt.
Ich kenne kein Modul, wo der Code gleich ist. Aber du kannst ja ein Feature Request stellen, dass sowas wie
core[]=7.x
core[]=8.x
rein soll.
D6 würde das nicht verstehen, deshalb erst ab d7.
Aber das würde wiederum auf drupal.org kein Sinn machen, weil man die Module ja sowie so einzeln commiten muss. Und eine Zahl ändern von zb 7 auf 8, sollte keine Arbeit sein.
Ich habe ein paar Module auf drupal.org gefunden, die codegleich für Version 5 und 6 sind. Mir fällt spontan zwar keines ein, aber einen weiteren Parameter einzubauen sollte ja kein Problem sein, aber auch nicht eine Zahl selbst auszubessern 🙂