Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Drupal 6 Module › Site Module (Mini Module) ›

Mini Modul mit Drupal 6, andere Syntax gegenüber Drupal 5

Eingetragen von quiptime (4972) am 30.09.2008 - 18:17 Uhr in
  • Drupal 6.x

Beim Erstellen von Minimodulen für Drupal 6 gibt es im Vergleich zu Drupal 5 Änderungen:

Fiktives Minimodul mit Namen "my_minimodule".

 
In der Minimodul-Datei "my_minimodule.info":

; $Id: my_minimodule.info, v 1.0 2008/09/30 19:00:00 quiptime $
name = Mp3 button change
description = Allows the change of name from the save button of node type mp3.
package = Mini modules
version = VERSION
core = 6.x
 
; Information added by quiptime on 2008-09-30
version = "6.x-dev"
project = "my_minimodule"

 
In der eigentlichen Minimodul-Datei "my_minimodule.module":

<?php /* $Id: my_minimodule.module,v 1.0 2008/09/30 19:03:00 quiptime $ */ 
 
function my_minimodule_form_alter(&$form, $form_state, $form_id) {
 
 
//print $form_id;

  //print '<pre style="background-color: white;">';
  //print_r($form);
  //print '</pre>';

 
if( $form_id == 'my_special_formid' ) {
   
$form['buttons']['submit']['#value'] = 'Super Submit';
  }
 
}
?>

Wesentliche Änderung gegenüber Drupal 5 sind die Funktions-Argumente &$form, $form_state, $form_id, die so in der Funktion enthalten sein müssen. Das "&" vor $form ist kein Schreibfehler!
Ebenso wurde in Drupal 6 die Form API geändert. Damit ergibt sich eine anderes Ansprechen der einzelnen Formular-Elemente im $form Array.

 
Um das $form Array "aufzulösen", d. h. um zu sehen wie man das $form Array ansprechen kann, wird der im Codebeispiel kommentierte Code

<?php
 
//print '<pre style="background-color: white;">';
  //print_r($form);
  //print '</pre>';
?>

durch

<?php
 
print '<pre style="background-color: white;">';
 
print_r($form);
  print
'</pre>';
?>

ausgegeben.
Damit kann man wunderbar erkennen wie einzelne Formular-Elemente angesprochen werden können.

Die Verwendung des HTML Tag <pre></pre> ist ein kleiner Trick um die Ausgabe von print_r() in lesbarer Form zu erhalten. Ohne "pre" erfolgt die Ausgabe einzeilig und ist nur schwer erfassbar.
Die Verwendung von style="background-color: white;" ist optional und stellt lediglich sicher das bei bestimmten Themes die Ausgabe von print_r() vor weissem Hintergrund lesbar ist.

print_r($form)

Hier ein Screenshot von einem Teil der Anzeige von /files/print_r_form.png die aufzeigt wie man das $form Array anspricht um im Minimodul das Formular-Element des Submitbutton mit neuem Inhalt zu versehen.

 

Minimodul aktivieren

Namenskonventionen

Der Name eines Minimodules kann frei gewählt werden. Naheliegend sind Bezeichnungen die auf die Funktion des Modules schließen lassen.

Die beiden erstellten Dateien eines Minimodul werden in einem Ordner mit dem gleichen Namen wie das Minimodul gespeichert. Also im Beispiel im Ordner "my_minimodule".

Als Nächstes wird dieser Ordner "my_minimodule" per FTP zum Webserver in die Drupalinstallation in den Ordner /sites/all/modules heraufgeladen. Wer mehrere Minimodule etwas organisierter in seiner Drupalinstallation ablegen möchte kann sich in /sites/all/modules einen Ordner "minimodules" erstellen und in diesem Ordner, also /sites/all/modules/minimodules, alle seine Minimodule versammeln. Dieser extra Ordner würde mit dem selbst gewählten Namen

package = Mini modules

in der Datei "my_minimodule.info" konform gehen.

Nun wird das neue Minimodul in der Moduladministration unter /admin/build/modules aktiviert.

Hier ein Screenshot der Moduladministration einer Drupalinstallation mit mehreren Minimodulen:

Hier wird auch sichtbar wie sich die Angabe package = Mini modules in der info Datei des Minimodules auswirkt.
 

Drupal Hook's und Namenskonventionen

Bezeichnungen für im Modul verwendete Funktionen müssen immer dann mit dem Namen des Modules konform gehen wenn mit den einzelnen Funktionen Hook's von Drupal verwendet werden. Beispiel:

<?php
/**
* Implementation of hook_perm().
*/
function my_minimodule_perm() {
  return array(
'Access my minimodule');
}
?>

Funktionen die keine Hook's verwenden können beliebig bezeichnet werden.

 

Weiteres

Ein aktiviertes Modul steht systemweit zur Verfügung. Das bedeutet man kann in einem Minimodul PHP Code unterbringen den man an beliebigen Stellen, beispielsweise einem Nodetype Template, verwenden kann.

Einfaches Beispiel

Man möchte irgendwo in der Drupalinstallation die Möglichkeit haben die Worte "Drupal ist eines der besten CMS." anzuzeigen. Einzige Bedingung dabei ist das man an dieser Stelle PHP Code schreiben kann. Dann würde ein Minimodul folgenden Code enthalten:

<?php  /* $Id: drupal_information.module, v 1.0 2008/10/12 12:12:54 quiptime $ */
 
function drupal_info() {
  print
theme('drupal_info_print');
}
 
/*
* Theme function
*/
function theme_drupal_info_print() {
 
$output = '';
 
 
$output = 'Drupal ist eines der besten CMS.';
 
  return
$output;
}
?>

Um dieses Minimodul zu seiner Arbeit zu bewegen muss an den gewünschten Stellen die Funktion drupal_info() ansprechen:
<?php
drupal_info
();
?>

In diesem Beispiel gibt es zusätzlich eine Theme Funktion.
Dadurch ist man in der Lage, für die Ausgabe die das Minimodul produziert, ein Template zu verwenden. Dieses Template hat die Bezeichnung "drupal_info_print.tpl.php" und kann, im Falle von Drupal 6 ohne weiteres tun zu müssen, als Datei "drupal_info_print.tpl.php" im Ordner des verwendeten Themes abgelegt werden.

Die Template Datei "drupal_info_print.tpl.php" würde folgenden Inhalt bekommen:

<?php  /* $Id: drupal_info_print.tpl.php, v 1.0 2008/10/12 12:19:05 quiptime $ */
 
 
$output = '';
 
 
$output .= '<div>Drupal ist eines der besten CMS der Welt.';
 
  print
$output;
 
?>

 
Hier eine einfache Änderung um die Ausgabe des Modules zu optimieren.

<?php  /* $Id: drupal_info_print.tpl.php, v 1.0 2008/10/12 12:19:05 quiptime $ */
 
 
$output = '';
 
 
$output .= '<div class="drupal-info">';
 
$output .= 'Drupal ist eines der besten CMS der Welt.</div>';
 
$output .= '</div>';
 
  print
$output;
 
?>

 
Auch wenn die Vorgehensweise mit dem Template im Minimodul in diesem Beispiel etwas sinnlos erscheint, sie soll das Prinzip aufzeigen.
Und man sollte in diesem Zusammenhang auch bedenken das selbst geschriebene Module bei ein wenig Übung schnell den Status "Mini" verlassen und zu "vollwertigen" Modulen mit vielen Zeile Code werden. In dieser Situation ist es nicht nur guter Styl, als Modul-Entwickler mit Theme Funktionen zu arbeiten, sondern auch sinnvolle Praxis.
 

‹ Autor-Information in allen Node-Formularen aufgeklappt nach oben Namen von Submitbutton ändern, form_alter (Drupal 5) ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 23 Stunden 56 Minuten
  • Hey danke
    vor 1 Tag 18 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 12 Stunden
  • Hallo, im Prinzip habe ich
    vor 6 Tagen 22 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 1 Stunde
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 21 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

DrupalCenter durchsuchen:

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
  • Entwicklung von Modulen und Themes
  • Drupalcenters Community
  • Drupal 7 Video-Trainings (Deutsch)
  • Drupal-Testumgebung erstellen
  • Drupal 6 Module
    • Kern-Module
    • Administration
    • Anzeige von Inhalten
    • Benachrichtigungen
    • Benutzer (Zugriff/Authentifizierung)
    • Benutzerverwaltung
    • Bewertung (Rating, Voting usw.)
    • Community
    • Content Construction Kit ( CCK )
    • Dateiverwaltung
    • E-Commerce
    • E-Mail
    • Entwickler
    • Events
    • Geodaten
    • Import/Export
    • Inhalt
    • Integration anderer PHP-Systeme
    • Javascript - JQuery - AJAX -AHAH
    • Kategorien (Taxonomy)
    • Medien
    • Mehrsprachigkeit
    • Organic Groups
    • Paging
    • Sicherheit
    • Statistik
    • Suche
    • Syndication
    • Themes
    • Views (deutsch: Ansichten)
    • WYSIWYG / Filter
    • Weitere Module
    • Werbung (Einbindung von AdSense & Co.)
    • Site Module (Mini Module)
      • Autor-Information in allen Node-Formularen aufgeklappt
      • Mini Modul mit Drupal 6, andere Syntax gegenüber Drupal 5
      • Namen von Submitbutton ändern, form_alter (Drupal 5)
      • Passwort- und E-Mail-Feld im Userprofil-Formular ausblenden
      • Select Listen im Profil ändern
      • Signature-Feld im Userprofil-Formular ausblenden
  • Drupal 7 Module
  • Drupal Screencasts auf deutsch
  • Archiv

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association