02. Das Modul in Drupal bekannt machen
Beschreibung des Themas: Lass Drupal wissen, dass das Modul existiert
beschriebener Drupal hook: hook_help
Alle Module müssen eine Datei namens modulname.info haben, die die Meta-Informationen über das Modul enthält.
Das generelle Format ist:
; $Id$
name = Modulname
description = Eine Beschreibung, was das Modul macht.
core = 6.x
In diesem Beispiel wird die Datei "onthisdate.info" genannt. Ohne diese Datei wird das Modul nicht in der Liste der Module auftauchen. Für unsere Beispiel kann die Datei den folgenden Inhalt enthalten (die Texte werden generell in englischer Sprache verfasst und können später übersetzt werden!):
; $Id$
name = On this date
description = A block module that lists links to content such as blog entries or forum discussions that were created one week ago.
core = 6.x
Füge den obigen Text zu einer Datei namens onthisdate.info
hinzu und speicher diese im Modulverzeichnis unter sites/all/modules/onthisdate
.
Details der info Datei
- name (erforderlich)
- Der angezeigte Name Deines Moduls. Er sollte den Drupal-Regeln zur Grossschreibung folgen: nur der erste Buchstabe des ersten Wortes wird gross geschrieben ("Example module", nicht "example module" oder "Example Module")
name = On this date
- description (erforderlich)
- Eine kurze, vorzugsweise einzeilige Beschreibung, die dem Administrator mitteilt, was das Modul macht. Denke daran, dass sich schlecht mit übermässig langen Beschreibungen arbeiten lässt, sei also präzise. Das Feld ist auf 255 Zeichen beschränkt.
description = A block module that lists links to content such as blog entries or forum discussions that were created one week ago.
In der Beschreibung müssen Sonderzeichen durch ihre HTML-entity Werten ersetzt werden. Verwende beispielsweisedescriptiom = This is my "crazy@email.com" email address
anstelle vondescription = This is my "crazy@email.com" email address
Sollte die Beschreibung einfache Anführungszeichen oder Hochkommata enthalten, kannst Du den gesamten Text einfach in doppelte Anführungszeichen setzen. Alsodescription = "Please don't use this unless you know what you are doing."
- core (erforderlich)
- Seit Drupal 6.x weigert sich der Drupal Kern ein Modul auszuführen, dass nicht explizit für die entsprechende Kern-Version geschrieben wurde. Die .info Datei muss demnach definieren, für welche Kern-Version das Modul (oder Theme) gedacht ist. Dies wird durch das neue Attribut core in .info Dateien erzwungen.
core = 6.x
Hinweis: das Skript zum Packen von Releases auf drupal.org setzt den Wert automatisch anhand der Kern-Kompatibilität, die für das Release angegeben wurde. Nutzer, die die fertigen Pakete von drupal.org herunterladen, haben so also immer den richtigen Wert. Seiten jedoch, die ihre Module direkt aus dem CVS laden, sollten den Wert händisch in die .info Dateien der entsprechenden Module eintragen. Das ist übrigens auch ein guter Weg, um den Nutzern zu zeigen, mit welcher Kern-Version der HEAD im CVS kompatibel ist.
- dependencies (optional)
- Es gibt eine Menge an weiteren Optionen, die in der .info Datei auftauchen können. Eine davon sind die Modulabhängigkeiten (dependencies). Wenn ein Modul ein anderes Modul benötigt, um aktiviert zu werden, müssen alle erforderlichen Module (der Dateiname ohne ".module") wie folgt aufgelistet werden:
dependencies[] = taxonomy
dependencies[] = commentFür unser Beispielmodul benötigen wir dies nicht, so dass der Eintrag auch weggelassen werden kann. Wenn Abhängigkeiten zu anderen Modulen bestehen, verhindert Drupal die Aktivierung des eigenen Moduls, solange die anderen Module nicht ebenfalls aktiviert sind.
- package (optional)
- Wenn ein Modul hier einen Text angibt, wird das Modul auf der Seite admin/build/modules zusammen mit anderen Modulen des gleichen Paketes gruppiert. Sollte kein Paketnamen angegeben werden, so erscheint das Modul unter der Kategorie 'Other'. Dies ist vollkommen in Ordnung; Pakete sind vorzugsweise dann zu verwenden, wenn man mehrere Module in einem Bundle ausgeliefert werden oder zusammen verwendet werden sollen. Wenn Du dabei unsicher bist, lass das Feld einfach leer.
package = "Your arbitrary grouping string"
Empfohlene Beispiele geeigneter Paketnamen:
- Audio
- Bot
- CCK
- Chat
- E-Commerce
- Event
- Feed parser
- Organic groups
- Station
- Video
- Views
- Voting (wenn es von der VotingAPI abhängt)
- Location
Die Dateien verwenden das ini Format und können auch ; $Id$
enthalten, damit CVS die Informationen zu Datei Id einfügt.
Für mehr Informationen zu dem Format von ini Dateien gibt es die PHP.net parse_ini_file Dokumentation.
hook_help (Hilfe hook)
Für unser Modul können wir auch Hilfe und erweiterte Informationen bereitstellen. Durch die Verwendung der .info Datei (siehe oben) ist dieser Hook nunmehr optional. Jedoch ist es immer eine gute Idee, ihn zu implementieren. Der Name des Hooks ist 'help', so dass wir mit der Funktion onthisdate_help()
beginnen:
<?php
function onthisdate_help($path, $arg) {
}
?>
Die Variable $path
stellt den Kontext der Hilfe zur Verfügung: wo in Drupal oder im Modul sich ein Nutzer befindet, wenn er auf die Hilfe zugreift. Der empfohlene Weg, diese Variable abzufragen ist über eine switch
Anweisung. Dieses Code-Pattern ist üblich in Modulen von Drupal.
<?php
/**
* Display help and module information.
* @param path
* Which path of the site we're displaying help.
* @param arg
* Array that holds the current path as would be returned from arg() function.
* @return
* help text for the path.
*/
function onthisdate_help($path, $arg) {
$output = '';
switch ($path) {
case "admin/help#onthisdate":
$output = '<p>'. t("Displays links to nodes created on this date") .'</p>';
break;
}
return $output;
} // function onthisdate_help
?>
Der Fall admin/help/#modulename
wird von Drupal verwendet, wenn von der generellen Hilfeseite (/admin/help oder ?q=admin/help) verlinkt wird. Du möchtest hier möglichweise eine etwas ausführliche Beschreibung geben, um dem Nutzer eine bessere Hilfe anzubieten.
Füge den obigen Quelltext zu einer Datei namens onthisdate.module
hinzu und speichere diese wieder im Modulverzeichnis.
Siehe auch
- Anmelden oder Registrieren um Kommentare zu schreiben
Velinkung in info?
am 11.11.2010 - 21:02 Uhr
Kann oder darf man einen Link zur Seite "Berechtigungen" in der .info setzen?
Da die Anleitung bevor Drupal 7 geschrieben wurde und in der neuen Version zum jeweiligen Modul es einen Link für "Berechtigung" gibt, dachte ich mir, dass ich zumindest in der info einen rein setze, damit der Benutzer über die Modul-Seite diesen direkt erreichen könnte.
Berechtigungen
am 15.11.2010 - 07:55 Uhr
Hallo.
Kann oder darf man einen Link zur Seite "Berechtigungen" in der .info setzen?
Nein, dies geschieht vollkommen automatisch.
In der .info wird nur der Verweis auf die Konfigurationsseite des Moduls gesetzt.
Stefan
PS: Fragen (auch zu Handbuchseiten) bitte im Forum stellen.