---------------------------------------------------- I Drupal-Modul-Entwicklung I ---------------------------------------------------- Ein Modul besteht min. aus 2 Dateien: .info ... Beschreibung des Moduls .module ... eigentliche Implementierung Ablage der Moduldateien: ./sites/all/modules/<modulename>/ <modulname>.info ---------------------------------------------------- ;$Id$ // fuer CVS Server name = "Modul Namen" // (; ... Beginn eines Kommentares) description = "Modul Beschreibung" core = 6.x php = 5.1 <modulename>.module ---------------------------------------------------- <?php //$Id$ /** * @file * kurze Modul-Beschreibung */ // Konstanten ... // Drupal hook-Funktionen // Funktionen, welche vom Drupal ... // System aufgerufen werden // Modul-spezifische Funktionen ... // am Ende kein Schließen '?>' help-Hook ---------------------------------------------------- /** * Anzeige von Hilfetext und Modul-Information * @param section ... In welcher Sektion der Drupal-Seite * die Hilfe erscheint. * @return ... Hilfetext fuer spezifizierte Sektion */ function <modulename>_help ($section='') { $output = ''; switch($section) { case "admin/help#<modulename>": $output = '<p>' . t("Info") . '</p>'; break; } return $output; } permission-Hook ---------------------------------------------------- /** * Vorhandene Zugriffsrechte fuer dieses Modul * @return array ... Enthaelt alle Zugriffsrechte. */ function <modulename>_perm() { return array('access <modulename> content', 'administer <modulename>'); } standard User: 'administer users' 'access content' block-Hook ---------------------------------------------------- /** * HTML Generierung fuer den Block * @param op ... Die Operation von der URL. * @param delta ... Offset (welcher Block). * @returns ... HTML Ausgabe. */ function <modulename>_block ($op='list', $delta=0, $edit=array()) { switch($op) { case 'list': $blocks[0]['info'] = t('<modulename>'); return $blocks; case 'view': $blocks['subject'] = t('Block Beschreibung'); $blocks['content'] = t('Block Inhalt'); return $blocks; } } menu-Hook ---------------------------------------------------- /** * Link in Menue eintragen (mit vielen unterschiedlichen Optionen) */ function <modulename>_menu() { $items['menuname'] = array( 'title' => t('Titel des Eintrags'), 'page callback' => '<modulename>_showSite', 'access arguments' => array('access <modulename> content'), 'type' => MENU_NORMAL_ITEM, 'menu_name' => 'primary-links', ); return $items } /** * Callback des Menueeintrags */ function <modulename>_showSite() { return $output; // Ausgabe durch Drupal, mit Menue und Theme print $output; // eigene Ausgabe, komplett nackte Seite } verfuegbare Menues: navigation primary-links secondary-links weitere Informationen: http://api.drupal.org/api/function/hook_menu Hilfreiche Funktionen ---------------------------------------------------- t() ... Translationsfunktion (fuer mehrsprachige Seiten) t('string') t('string !var', array('!var' => 'other string')); t('string @tag', array('@tag' => '<i>')); ... Ausgabe: string <i> ... wird mit check_plain() ueberprueft ... Error Funktion watchdog('<modulename>', $msg, $vars, WATCHDOG_WARNING); WATCHDOG_ERROR WATCHDOG_NOTICE WATCHDOG_INFO WATCHDOG_DEBUG