Вы здесь

Программное создание и вывод пункта меню с динамическим путем

0

Добрый день.
Хочу программно добавить в существующее меню свой пункт, который будет менять путь в зависимости от того к какой группе относится пользователь.

Написал свой модуль в котором вызываю hook menu, но есть проблемы:
1. Пункт выводится только в меню "Навигация", не зависимо от того, какое меню я указываю в модуле.
2. И в место моего заголовка для пункта меню, указывается заголовок ноды.

Подскажите пожалуйста, что я делаю не так?

Вот код модуля:

/**

* Реализация hook_menu().
*/
function mymenu_menu() {
$items['node/%node'] = array(
'title' => 'Группа',
'page arguments' => array(1),
'access callback' => 'node_access',
'access arguments' => array('view', 1),
'weight' => -10,
'type' => MENU_NORMAL_ITEM,
'menu_name' => 'menu-user-menu-default'
);
return $items;
}

function node_to_arg($arg) {
// $arg содержит '%', т.к. это обобщенный символ.
// Заменим его на ID первой группы у пользователя.
global $user;
$user_fields = user_load($user->uid);
return $user_fields->og_user_node[LANGUAGE_NONE][0]['target_id'];
}

Версия Drupal: 
7.x
Категория: 
Menu API
Вопрос задан 16.11.2015 - 15:04
Аватар пользователя 69
69
11

Ответы

0

У меня примерно такая же ситуация была. Вот тут решение http://dru.io/question/4286
Может быть тут ещё кто-нибудь подскажет другой вариант. Интересно будет посмотреть.

Ответ дан 16.11.2015 - 15:30
Аватар пользователя shu
shu
178

Приветствую.
Спасибо за ссылку, видел ваш вопрос.
Но в вашем случае было необходимо поменять ссылку в пункте, а мне необходимо добавить новый пункт.
Из-за этого решил пойти по другому пути, который так же предложили в вашем вопросе, но что-то не получается...

Комментарий оставлен 16.11.2015 - 16:06
0

так node/%node уже существует. Для изменения существующих пунктов меню hook_menu_alter надо использовать.

Ответ дан 16.11.2015 - 17:17