09. Drupal über die neue Funktion informieren
Beschreibung des Themas: Verwendung des Menüsystems
beschriebener Drupal hook: hook_menu
Wie schon zuvor erwähnt, ist die zuletzt von uns geschriebene Funktion (function onthisdate_all()
) kein echter 'Hook' ist, es also auch kein von Drupal erkannter Name ist. Wir müssen Drupal jetzt noch beibringen, dass die Funktion beim Aufruf der entsprechenden Seite ausgeführt werden soll. Dies tun wir mittels hook_menu()
. Im 7. Teil des Handbuchs haben wir hook_menu()
bereits verwendet. hook_menu()
legt die Verbindung zwischen einer URL und der Funktion, die den Inhalt für diese URL generiert, fest. Der Hook prüft auf Wunsch auch die Berechtigungen auf diese URL. Wir werden die bereits vorher erstellte Implementierung von hook_menu()
verwenden und sie einfach erweitern.
<?php
function onthisdate_menu() {
$items = array();
// Dies wurde in Teil 7 des Handbuchs erstellt.
$items['admin/settings/onthisdate'] = array(
'title' => 'On this date module settings',
'description' => 'Description of your On this date settings control',
'page callback' => 'drupal_get_form',
'page arguments' => array('onthisdate_admin'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
// Neuer Code für diesen Teil.
$items['onthisdate'] = array(
'title' => 'On this date',
'page callback' => 'onthisdate_all',
'access arguments' => array('access onthisdate content'),
'type' => MENU_CALLBACK
);
return
$items;
}
?>
Grundlegend sagen wir, dass wenn ein Nutzer zur Seite "onthisdate" navigiert (entweder über example.com?q=onthisdate oder über example.com/onthisdate) der von der Funktion onthisdate_all()
generierte Inhalt angezeigt wird. Den Titel der Seite setzen wir als "On this date" fest. Der Typ MENU_CALLBACK
teilt Drupal mit, dass der Link nicht im Menü des Nutzers angezeigt werden soll, sondern quasi nur eine Funktion ist, die der URL zugeordnet wird. Wenn der Link auch in der Navigation auftauchen soll, verwende stattdessen MENU_NORMAL_ITEM
.
Berechtigungen
Wie bereits im 7. Teil des Handbuchs erwähnt, kann hook_menu()
auch Berechtigungen überprüfen, bevor die Seite gerendert wird. Der Eintrag 'access arguments' im Array des Menüpunktes setzt diese Überprüfung. Wenn Du eine Zugriffsberechtigung in hook_perm()
hinzugefügt hast, kannst Du diese hier als Parameter der Funktion user_access() verwenden. Sollte der Nutzer nicht Mitglied der Rolle sein, die die entsprechende Berechtigung hat, so wird der Seiteninhalt für diesen Nutzer nicht angezeigt.
Ausprobieren
Wenn das Modul bisher noch nicht aktiviert wurde, hole dies (wie in Teil 6 des Handbuchs beschrieben) jetzt nach. Solltest Du es bereits aktiviert haben, deaktiviere es jetzt einmal und aktiviere es erneut. Dadurch werden die Menüdefinitionen neu geladen.
Navigiere nun zu example.com/onthisdate (oder example.com/?q=onthisdate bei deaktivierten clean-urls) und schau nach, was dort zu sehen ist.
Siehe auch
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Tagen 9 Stunden
vor 3 Tagen 4 Stunden
vor 3 Tagen 7 Stunden
vor 3 Tagen 10 Stunden
vor 4 Tagen 12 Stunden
vor 4 Tagen 12 Stunden
vor 5 Tagen 14 Stunden
vor 5 Tagen 18 Stunden
vor 6 Tagen 8 Stunden
vor 6 Tagen 12 Stunden