Facebook
Twitter
Google+
Kommentare
4

Drupal – Grundlegendes zur Modulerstellung

drupal_logoDevelopment 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).

Über den Autor

Ewi

Als ich die Oberstufe mit 17 abgebrochen habe und als Sekretärin, ähm Office Managerin, zu arbeiten begann, stellte ich sehr schnell fest, dass ich keine Aktenhüllen für irgendwelche hochnäsigen Professoren schlichten möchte und stellte mir die Frage "Was willst du eigentlich mal machen?". Ohne mir lange überlegt zu haben, ob mich die Materie überhaupt interessieren wird, eher vom Gedanken geleitet „irgendeine“ eine Schule abzuschließen und vom damaligen EDV-Boom beeinflusst, habe ich mich für eine der renommiertesten EDV Schulen Österreichs, der HTL Spengergasse Abendschule (ja, tagsüber arbeiten und abends Schule) entschieden, die ich 1999 begonnen und mittlerweile seit einigen Jahren abgeschlossen habe. Ich programmiere also seit Ende 1999 und bin mittlerweile selbstständig (knitwork).
Kommentare

4 Comments

  1. 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.

    Reply
  2. 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.

    Reply
  3. 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 🙂

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen