2010-08-05 2 views
1

У меня есть пункт меню «Входящие» в меню «Дилерское меню». Я хочу изменить «Входящие» на «Входящие (1)» или «Входящие (2)» в зависимости от количества сообщений, которые пользователь имеет в своем почтовом ящике. Как изменить значение ON THE 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; по каждому пункту меню - вам нужно будет отредактировать пункт меню для этого крюк, чтобы назвать и альтер разрешение установлено в 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 будет отмечать каждую ссылку как изменяемый, который не обязательно является желательным (неблагоприятное влияние на производительность) - некоторые дополнительные проверки на $ пункта здесь означало бы, что вы только отмечаете их пункты меню, которые вы хотите изменить.

Смежные вопросы