You are here

Drupal - Modul

----------------------------------------------------
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 &lt;i&gt;
                ... wird mit check_plain() ueberprueft
 
    ... Error Funktion
    watchdog('<modulename>', $msg, $vars, WATCHDOG_WARNING);
                                          WATCHDOG_ERROR
                                          WATCHDOG_NOTICE
                                          WATCHDOG_INFO
                                          WATCHDOG_DEBUG