在Drupal中动态编辑菜单项?

时间:2010-08-05 08:38:50

标签: drupal drupal-6

我在名为“经销商菜单”的菜单上有一个名为“收件箱”的菜单项。我想将“收件箱”更改为“收件箱(1)”或“收件箱(2)”,具体取决于用户在收件箱中的邮件数量。如何更改飞行中的值。即在每个页面刷新?

2 个答案:

答案 0 :(得分:0)

我最终解决了这个问题:

$dealerMenu = menu_navigation_links('menu-dealer-menu');
$menu = theme('links', $dealerMenu);
print str_replace("Inbox", "Inbox (".get_number_of_messages_in_inbox().")", $menu);

答案 1 :(得分:0)

如果您调用hook_menu_link_alter,则可以在每个菜单项上设置$item['options']['alter'] = TRUE; - 您需要编辑要调用此挂钩的菜单项,并将alter权限设置为true。

设置完成后,将在每个菜单项呈现之前调用hook_translated_menu_link_alter,允许您更改菜单项标题。

示例代码为:

function MY_MODULE_menu_link_alter(&$item) {
    $item['options']['alter'] = TRUE;
}

function MY_MODULE_translated_menu_link_alter(&$item, $map) {
    if($item['mlid']==89) {
        $item['title'] .= ' ('.get_number_of_messages_in_inbox().')';
    }
}

这个唯一的限制是hook_menu_link_alter会将每个链接标记为可变的,这不一定是可取的(对性能有不利影响) - 这里对$ item的一些额外检查意味着你只是将它们标记为你想要的菜单项作为可变的