Изменение ссылок меню, если пользователь аутентифицируется или нет

Я должен изменить ссылки меню на свой веб-сайт (и уехать, те же имена объектов) в зависимости от пользователя гость или аутентифицируемый пользователь.

Что стандартный путь состоит в том, чтобы сделать это?

спасибо

5
задан kiamlaluno 15 July 2010 в 03:09
поделиться

2 ответа

Вы не можете динамически изменить путь пункта меню, потому что пункты меню кэшируются.

Тем не менее, AFAIK, есть два способа получить то, что вы хотите. Оба способа требуют создания пунктов меню с помощью hook_menu в пользовательском модуле (не из пользовательского интерфейса меню).

Первый способ заключается в создании двух пунктов меню с одинаковыми названиями и установке правил доступа так, чтобы один был доступен только для вошедших в систему гостей, а другой - для аутентифицированных пользователей. Поскольку Drupal будет показывать только те пункты меню, доступ к которым разрешен пользователю, в любой момент времени будет отображаться только один из них. В Drupal core вы можете увидеть, как модуль user создает пункт меню для анонимных пользователей, посмотрев на путь /user/login в user_menu().

Второй метод заключается в создании одного пункта меню и проверке в обратном вызове меню, вошел ли пользователь в систему. Если пользователь вошел в систему, вы обслуживаете одну страницу, если нет - другую. В ядре Drupal путь /user работает следующим образом. Смотрите user_page, чтобы увидеть, как работает код.

5
ответ дан 13 December 2019 в 19:20
поделиться

Вместо изменения ссылку, вы можете создать меню дважды: один раз со ссылками для обычных пользователей и один раз со ссылками для зарегистрированных пользователей / admin / ...

Вы можете поместить меню в блок и настроить его так, чтобы разрешать только зарегистрированным пользователям чтобы увидеть один блок, а незарегистрированных пользователей - другой блок. Либо выбрав соответствующий переключатель в меню Drupal в форме создания блока, либо через PHP, который будет оценивать и отображать его в зависимости от возвращаемого значения (ИСТИНА / ЛОЖЬ). Я предлагаю использовать первый подход.

2
ответ дан 13 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: