Menu Items
am 08.11.2009 - 14:43 Uhr in
Hi Leute,
ich braeuchte hier euren Rat, da ich schon einige Tage hin und her probiert habe. Ich moechte gerne dem User mehr als eine persoenliche Seite geben. Dafuer habe ich mir folgendes Konzept ueberlegt:
1. Ich setze alle Seiten als Unterseiten von user/%user.
2. Es gibt einen MENU_LOCAL_TASK, den ich 'Info' nenne und der auf die Hauptprofilseite ('My Account') zurueck linkt.
3. Alle zusaetzlichen Seiten werde ich ebenfalls als MENU_LOCAL_TASKs implementieren, sodass sie der von Drupal gegebenen User-Page user/%user untergeordnet sind (bspw. user/%user/info oder user/%user/publications).
4. Weiterhin sollen allen Seiten als untergoerdnete MENU_LOCAL_TASKs wie in der Drupal Grundversion 'VIEW' und 'EDIT' tasks zugeordnet werden. Dies sollte auch schon im Theme 'garland' funktionieren, da es zwei Ebenen von MENU_LOCAL_TASKS zulaesst, wenn ich das Drupal Entwicklerhandbuch zitieren darf.
Nun zu meinem Problem:
Ich bekomme den Punkt 'Info' als MENU_LOCAL_TASK hin. Allerdings funktionieren die Callbacks nicht, da Drupal nach der Datei user.pages.inc sucht. Diese habe ich dann nochmal in meinen eigenen Modulordner kopiert, aber Drupal meckert weiter. Es scheint, dass einige Funktionen innerhalb user.module definiert sind und dort komme ich nicht ran, weder ueber hook_menu() noch ueber hook_menu_alter().
Weiterhin gibt es dieselben Probleme mit den Unterpunkten 'View' und 'Edit'. Dabei werden diese Punkte noch nicht einmal als Unterpunkte von Info angezeigt.
Habt ihr schonmal ein aehnliches Problem gehabt? Und wie habt ihr es geloest? Wie sieht es mit den MENU_LOCAL_TASKs bei garland wirklich aus, wie viele Ebenen sind gegeben und ab welcher muss ich selbst Hand anlegen?
Ich freue mich ueber jede Hilfe!
- Anmelden oder Registrieren um Kommentare zu schreiben
Zuruecklinken klappt
am 08.11.2009 - 15:13 Uhr
Das Zuruecklinken ueber 'Info' auf die Hauptuserseite 'My Account' funktioniert mittlerweile. Ich musste den 'type' auf MENU_DEFAULT_LOCAL_TASK setzen.
Die Probleme mit den untergeordneten MENU_LOCAL_TASKs 'View' und 'Edit' sind allerdings immer noch vorhanden. Ich habe schonmal versucht einen relink in hook_menu_alter() zu implementieren mit
function mymodule_menu_alter(&$items, $menu) {
if($item['link_path'] == 'user/%user/view') {
drupal_goto('user/%user/info/view');
}
}
jedoch ohne Erfolg!
menu_secondary_local_tasks()
am 09.11.2009 - 00:47 Uhr
Ich habe nach endlosem Probieren mir das Theme Garland vorgenommen, da ich wissen will, ob dort die zweite Ebene von MENU_LOCAL_TASKs ueberhaupt implementiert ist. Was ich gefunden habe in der template.php file im garland theme ist folgender Code:
/**
* Returns the rendered local tasks. The default implementation renders
* them as tabs. Overridden to split the secondary tasks.
*
* @ingroup themeable
*/
function phptemplate_menu_local_tasks() {
return menu_primary_local_tasks();
}
Hier sehe ich aber nur die Funktion menu_primary_local_tasks() implementiert. Die entsprechende Funktion fuer die secondary tasks (menu_secondary_local_tasks()) finde ich nicht. Kann mir jemand erklaeren was es damit auf sich hat?
"Overridden to split the secondary tasks" im Kommentar zum Code. Heisst das, die ist schon ueberschrieben worden oder heisst das, das ich das selbst machen kann. Wenn ja, wie gehe ich das an?
Ich bin ueber jeden Kommentar dankbar.