Admin-Menü erweitern...
Eingetragen von saila (59)
am 08.02.2009 - 17:04 Uhr in
am 08.02.2009 - 17:04 Uhr in
Hi,
ich schreibe derzeit ein neues Modul. Installation ist soweit fertig und läuft ohne Bug durch. Nun möchte ich das Admin-Menü (Ansicht: Garland) auf der linken Seite in dem Bereich "Inhalte erstellen" um einen weiteren Menüpunkt ergänzen.
Welchen Ansatz gibt es hierzu? Das Thema hook_menu() abe ich soweit durch und auch bereits getestet. Damit ist es nicht realisierbar - oder doch? Wie auch immer, wäre über einen Anstoss in die richtige Richtung begeistet.
gr.
saila
- Anmelden oder Registrieren um Kommentare zu schreiben
Menü erweitern
am 08.02.2009 - 17:58 Uhr
Über den Hook_menu kommst du daran. Mit "node/add" kommst du auf den gewünschten Bereich. Etwa so:
deinModul_menu() {
$items = array();
$items['node/add/deinPfad'] =
array(
'title' => 'Dein Menüpunkt',
'type' => MENU_NORMAL_ITEM,
'description' => 'Irgendeine Erklärung',
'page callback' => '_deine_funktion',
);
return $items;
} // END dev_form_menu
Vergiss nur nicht das Menü einmal neu aufzubauen (am sichersten update.php ausführen), Drupal speichert die Menüpunkte und fragt diese nicht ständig neu ab.
Gruß
UwBach
Menü erweitern
am 08.02.2009 - 19:06 Uhr
Hi UwBach,
danke für die Info. Nun habe ich eben entdeckt, dass man ja die Adminmenüleiste auch unter Menü -> Navigation ergänzen kann. Muss man das ohnehin oder erkennt Drupal den Menüeintrag automatisch (wobei ich bislang von letzterem ausging)?
Zum Update - wird durch eine Ausführung der update.php alles andere nicht verändert bzw. wird lediglich die oder das neue Modul hinzugefügt?
edit:
Und noch zwei Frage:
Wo ist eine Übersicht zur Modulerstellung, welche Dateien für ein Modul neben der info und module erforderlich sind bzw. welche Dateien?
gr.
saila
Menü erweitern
am 09.02.2009 - 08:40 Uhr
Zum Update - Wenn die Update.php ausgeführt wird, schaut Drupal in jedem aktivierten Modul nach ob Veränderungen vorliegen. Das betrifft vor allem das *.install-File und ein paar Hooks (hook_menu, hook_cron). Das Menü wird dabei neu aufgebaut und in der Datenbank-Tabelle {menu_links} abgespeichert. Diese Funktion wird aber nur ausgeführt, wenn ein Modul aktiviert wird oder die update.php läuft.
Hinweise zur Erstellung von Modulen findest du unter http://drupal.org/node/231276. Im Prinzip gibt es nur das *.info, *.module und das *.install-File. Du hast dann innerhalb von Drupal auch auf alle anderen Funktionen der Module Zugriff, solange diese nicht als privat deklariert sind.
Du kannst auch eigene Scripte "includen" - PHP-Standard, wie du diese bezeichnest steht dir ja frei (zumeist *.inc). Drupal hat hierfür mittlerweile eine eingene Funktion module_load_all_includes($type, $name = NULL) (schlecht dokumentierte Funktionalität). Daneben gibt es noch ein paar weitere Sonderfälle, wie *.test (http://drupal.org/node/273612).
Gruß
UwBach
Danke für die Infos!! Nun
am 09.02.2009 - 10:56 Uhr
Danke für die Infos!! Nun noch die letzte Frage dann bin ich schon zufrieden :)
In welcher Datei/en werden die Funktionen ausgeführt? Also irgendwo muss doch eine Datei existieren, welche per require_once() die Funktionsdateien einbindet um die Funktionen auszuführen???
Das passiert automatisch ..
am 09.02.2009 - 11:05 Uhr
.. wenn du ein Modul erstellst. Drupal bindet die Module-Scripte ein, sofern du die korrekte Syntax beachtest. Das ist eine Core-Funktion, dass genaue Script hierfür kenne ich nicht.
Gruß
UwBach
Ausführende Datei
am 09.02.2009 - 11:19 Uhr
Ok - dennoch danke für die ausführlichen Infos. Habe mir eben noch ein Buch bestellt und gehe davon aus, dass ich die unbekannte Datei zur Ausführung der Funktionen darin finde. Werde es mitteilen wie ich sie gefunden habe.
Die Funktion brauchst du nicht
am 09.02.2009 - 11:33 Uhr
Sobald du eine Funktion schreibst und diese richtig bennenst wird Drupal die aufrufen.
Beispiel:
Dein Modul heißt "mein_spezial"
Alle Funktionen die so benannt sind werden ausgeführt
"mein_spezial_menu" bindet den Hook_menu ein
"mein_spezial_cron" bindet den Hook_cron ein
"mein_spezial_meineListe" stellt eine eigene Funktion zur Verfügung und ist über andere Module aufrufbar
usw.
Falls du Funktionen privat halten willst kannst du die einfach anders benennen
"_meine_private_funktion" Drupal wird diese nicht einbinden und ist damit auch durch andere Module nicht aufrufbar.
Achte nur darauf keine Funktionsnamen zu verwenden die durch Hooks schon belegt sind.
Ein Buch ist immer sinnvoll, wenn man Module erweitern oder programmieren will. Ich kann da "Drupal Pro Development" empfehlen.
Gruß
UwBach
Die Funktion .....
am 09.02.2009 - 12:08 Uhr
Mir ist klar, dass ich die Funktion nicht brauche. Allerdings möchte ich schon das gesamte System
verstehen. Deshalb frage ich danach.
Für den Modulaufbau ist eigentl. soweit alles verstanden. Es sind lediglich noch die Funktionsbezeichnungen,
welche ich für die jeweiligen Aufgaben suchen/finden muss.
Vorerst habe ich mal das Drupal 6 Buch bestellt. Von der Entwicklungsseite her sehe ich da keine Thematik mir
hierfür ein Buch zu kaufen. Vielmehr geht es mir um den logischen Aufbau. Ist dieser verstanden ist der rest
relativ simple. (Bitte keine Überheblichkeit in den letzten Absatz hinein interpretieren).
Beschäftige mich nun seit 3 Tagen mit Drupal und bin jetzt lediglich an der logischen Zusammensetzung der Abläufe
im Adminbereich und danach für das Frontend. Installation und Aufruf laufen bereits und wie so oft fällt einem
noch was neues ein, wenn man an der Entwicklung von etwas neuem ist.
Gibt es evtl. Leute, welche ein Modul testen und wer ist Ansprechpartner in Köln/Bonn bzgl. Durpal-Entwicklung?