• Drupal – Grundlegendes zur Modulerstellung

    von am 7. April 2009

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

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

    Zum Profil von Ewi

    4 Kommentare »


    • TobiasB
      am 7. April 2009 um 08:18 Uhr

      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.


    • Evelyne Selak
      am 7. April 2009 um 08:32 Uhr

      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.


    • TobiasB
      am 7. April 2009 um 10:00 Uhr

      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.


    • Evelyne Selak
      am 7. April 2009 um 10:04 Uhr

      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 :)

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.