2010-08-05 122 views
1

我在名爲「經銷商菜單」的菜單上有一個名爲「收件箱」的菜單項。我想根據用戶收件箱中的郵件數量將「收件箱」更改爲「收件箱(1)」或「收件箱(2)」。我該如何改變ONY FLY的值。即在每一頁刷新?在Drupal中動態編輯菜單項?

回答

0

我最終解決這樣的:

$dealerMenu = menu_navigation_links('menu-dealer-menu'); 
$menu = theme('links', $dealerMenu); 
print str_replace("Inbox", "Inbox (".get_number_of_messages_in_inbox().")", $menu); 
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將迎來每一個環節的改變的這不一定是理想的(不利對性能的影響) - 這裏的$項目附加的檢查意味着你只是將你想要的菜單項標記爲可更改的。