Drupal Das Modulsystem in Drupal 11/2008 Johannes Haseitl derhasi.de | dug-hannover.org
Dateistruktur modules Kernmodule (system, user, node, comment, locale) - im Regelfall nicht anzutasten!! - sites/all/modules Zusatzmodule für alle  Multisiteinstallationen (cck, views, admin_menu, etc. & eigens geschriebene Module)
Info-Datei ; $Id:  taxonomy_image.info,v 1.1.2.1.2.3 2008/03/03 02:02:51 nancyw Exp $ name  = Taxonomy Image description  = Upload and associate images with taxonomy terms. dependencies  = taxonomy package  = Taxonomy Image ; Information added by drupal.org packaging script on 2008-09-12 version = "5.x-1.x-dev" project = "taxonomy_image" datestamp = "1221178308" Beispiel aus Modul Taxonomy Image (drupal.org/project/taxonomy_image) (optional) ; $Id:  :  Infotag für CVS auf drupal.org, wird automatisch angepasst name  : Modulname description : Modulbeschreibung für die Modulliste  (admin/build/modules) dependencies : Abhängikeiten zu anderen Modulen package : Paket zur Gruppierung der Anzeige in  admin/build/modules => Speichern unter: sites/all/modules/ meinmodul/meinmodul.info
Moduldatei sites/all/modules/ meinmodul/meinmodul.module Einfache PHP-Datei mit öffnender <?php-Klammer. Auf schließendes Tag wird verzichtet, u.a. wg. eventueller Leerzeichen die das Senden des HTTP-Headers vorzeitig auslösen könnten. // $Id$  erlaubt das hinzufügen von Versionsinformationen der Dateien durch CVS auf drupal.org. <?php // $Id$
Coding Standars http://drupal.org/coding-standards Generelle Richtlinien für Code in Drupalmodulen Basiert auf PEAR Coding Standards Dokumentierung im Doxygen Format
Hooks Zentrale Eingriffspunkte in Drupalfunktionalitäten Zugriff durch individuelle PHP-Funktionen hook_form_alter() hook_nodeapi() hook_menu() hook_perm() ...
Ansteuerung von Hooks Zum Ansteuern eines Hooks:  hook_hookname  wird im Modul (meinmodul.module) eine Funktion angelegt mit Namen function  meinmodul_hookname (...) Nun wird bei jedem Aufruf des Hooks diese Funktion aufgerufen.  Mehrere Module, gleicher Hook: Funktionen werden nacheinander ausgeführt. Variablen könnten überschrieben oder angepasst werden. Reihenfolge des Aufrufs nach Modulgewicht  (DB-Tabelle {system}.weight) , dann alphabetisch intern: Aufruf von  module_invoke_all()  oder  module_invoke()
FormsAPI drupal_get_form ('test_form') => Form-ID: 'test_form' test_form ($form_state) test_form_validate ($form, &$form_state) test_form_submit ($form, &$form_state) http://api.drupal.org/api/file/forms_api.html/5 http://api.drupal.org/api/file/forms_api_reference.html/5 function test_form($form_state){ $form = array(); $form['meintext'] = array( '#type'=>'textfield', '#title'=>t('My Textfield'), '#description'=>t('That is the description of my textfield'), '#default_value'=>'', ); return $form; }
Beispiele Beispielmodule für den Einstieg gibt es auch auf api.drupal.org (in den Beispielen kann mit einem Klick auf View Source die ganze .module-Datei angezeigt werden.)
Hooks von Zusatzmodulen CCK hook_field_info hook_field hook_field_settings hook_field_formatter_info hook_field_formatter hook_widget ... Views 1 hook_views_tables hook_views_arguments
Install-Datei Hinzufügen, Entfernen und Update von Datenbankeinträgen, Parametern und generellen Variablen. <?php // $Id$ function hook_install(){ ... } function hook_uninstall(){ ... } function hook_update_1(){ ... } function hook_update_2(){ ... } => Speichern unter: sites/all/modules/ meinmodul/meinmodul.install
Links Dokumentation: api.drupal.org drupal.org/contributors-guide Seiten fertiger Module: drupal.org/project/Modules drupalmodules.com

Modulsystem in Drupal

  • 1.
    Drupal Das Modulsystemin Drupal 11/2008 Johannes Haseitl derhasi.de | dug-hannover.org
  • 2.
    Dateistruktur modules Kernmodule(system, user, node, comment, locale) - im Regelfall nicht anzutasten!! - sites/all/modules Zusatzmodule für alle Multisiteinstallationen (cck, views, admin_menu, etc. & eigens geschriebene Module)
  • 3.
    Info-Datei ; $Id: taxonomy_image.info,v 1.1.2.1.2.3 2008/03/03 02:02:51 nancyw Exp $ name = Taxonomy Image description = Upload and associate images with taxonomy terms. dependencies = taxonomy package = Taxonomy Image ; Information added by drupal.org packaging script on 2008-09-12 version = &quot;5.x-1.x-dev&quot; project = &quot;taxonomy_image&quot; datestamp = &quot;1221178308&quot; Beispiel aus Modul Taxonomy Image (drupal.org/project/taxonomy_image) (optional) ; $Id: : Infotag für CVS auf drupal.org, wird automatisch angepasst name : Modulname description : Modulbeschreibung für die Modulliste (admin/build/modules) dependencies : Abhängikeiten zu anderen Modulen package : Paket zur Gruppierung der Anzeige in admin/build/modules => Speichern unter: sites/all/modules/ meinmodul/meinmodul.info
  • 4.
    Moduldatei sites/all/modules/ meinmodul/meinmodul.moduleEinfache PHP-Datei mit öffnender <?php-Klammer. Auf schließendes Tag wird verzichtet, u.a. wg. eventueller Leerzeichen die das Senden des HTTP-Headers vorzeitig auslösen könnten. // $Id$ erlaubt das hinzufügen von Versionsinformationen der Dateien durch CVS auf drupal.org. <?php // $Id$
  • 5.
    Coding Standars http://drupal.org/coding-standardsGenerelle Richtlinien für Code in Drupalmodulen Basiert auf PEAR Coding Standards Dokumentierung im Doxygen Format
  • 6.
    Hooks Zentrale Eingriffspunktein Drupalfunktionalitäten Zugriff durch individuelle PHP-Funktionen hook_form_alter() hook_nodeapi() hook_menu() hook_perm() ...
  • 7.
    Ansteuerung von HooksZum Ansteuern eines Hooks: hook_hookname wird im Modul (meinmodul.module) eine Funktion angelegt mit Namen function meinmodul_hookname (...) Nun wird bei jedem Aufruf des Hooks diese Funktion aufgerufen. Mehrere Module, gleicher Hook: Funktionen werden nacheinander ausgeführt. Variablen könnten überschrieben oder angepasst werden. Reihenfolge des Aufrufs nach Modulgewicht (DB-Tabelle {system}.weight) , dann alphabetisch intern: Aufruf von module_invoke_all() oder module_invoke()
  • 8.
    FormsAPI drupal_get_form ('test_form')=> Form-ID: 'test_form' test_form ($form_state) test_form_validate ($form, &$form_state) test_form_submit ($form, &$form_state) http://api.drupal.org/api/file/forms_api.html/5 http://api.drupal.org/api/file/forms_api_reference.html/5 function test_form($form_state){ $form = array(); $form['meintext'] = array( '#type'=>'textfield', '#title'=>t('My Textfield'), '#description'=>t('That is the description of my textfield'), '#default_value'=>'', ); return $form; }
  • 9.
    Beispiele Beispielmodule fürden Einstieg gibt es auch auf api.drupal.org (in den Beispielen kann mit einem Klick auf View Source die ganze .module-Datei angezeigt werden.)
  • 10.
    Hooks von ZusatzmodulenCCK hook_field_info hook_field hook_field_settings hook_field_formatter_info hook_field_formatter hook_widget ... Views 1 hook_views_tables hook_views_arguments
  • 11.
    Install-Datei Hinzufügen, Entfernenund Update von Datenbankeinträgen, Parametern und generellen Variablen. <?php // $Id$ function hook_install(){ ... } function hook_uninstall(){ ... } function hook_update_1(){ ... } function hook_update_2(){ ... } => Speichern unter: sites/all/modules/ meinmodul/meinmodul.install
  • 12.
    Links Dokumentation: api.drupal.orgdrupal.org/contributors-guide Seiten fertiger Module: drupal.org/project/Modules drupalmodules.com