it-swarm.com.de

Wie und wo füge ich programmgesteuert ein Menü zum Navigationsmenü hinzu?

Ich möchte dem Navigationsmenü je nach Status dynamisch Menüelemente hinzufügen (Beispiel: Benutzer ist angemeldet usw.). Ich gehe davon aus, dass ich dies in theme_preprocess mache, aber ich kann die Variable für Tweak nicht finden.

Suche ich am falschen Ort? Wo ist der beste Ort dafür und was ist die beste Methode?

6
Justin

Ich würde vorschlagen, hook_menu () auszuchecken. Beispielsweise sollte die folgende Implementierung von hook_menu(), die entweder in einem Modul oder in template.php platziert ist, ein Menüelement für anonyme Benutzer in das Navigationsmenü einfügen. Im Benutzermodul finden Sie einige gute Beispiele für die Implementierung von hook_menu() für verschiedene Benutzerrollen.

function MODULE_menu() {
   $items = array();
   $items['the/menu/path'] = array(
   'access callback' => 'user_is_anonymous',  //or 'user_is_logged_in' to check if logged in
   'type' => MENU_NORMAL_ITEM,
   'menu_name' => 'navigation',
   'title' => t('Title of Menu Item'),
  );
  return $items;
}
5
joedivic

Ich denke, Sie können es mit menu_link_save() erstellen.

$item = array(
  'link_path' => 'my_path',
  'link_title' => 'title',
  'menu_name' => 'header-top-menu', // Menu machine name, for example: main-menu
  'weight' => 0,
  'language' => $node->language,
  'plid' => 0, // Parent menu item, 0 if menu item is on top level
  'module' => 'menu',
);
menu_link_save($item);

Sie können den Code verwenden, den ich in einer hook_update_N() - Implementierung zeige.

Siehe auch Drupal 7 Menu Link Update über update.php .

6