Действительно ли возможно иметь анонимных пользователей (или более конкретно, пользователи без 'членской' роли) быть перенаправленным от определенного пункта меню до альтернативного узла моего выбора, возможно, с помощью custom_url_rewrite_inbound?
Это затем позволило бы мне иметь две версии определенных страниц для участников и нечленов (это - сайт определенная вещь!).
Удачи.
Использование custom_url_rewrite_inbound ()
для этого было бы чем-то похоже на использование кувалды для регулировки угла искаженного изображения - можно сделать, но это громоздко и сопряжено с риском нанесения некоторого ущерба; )
Лучшее решение зависит от того, чего вы хотите в точности достичь и как часто (например, для количества узлов) вам нужно это делать, поэтому вам следует объяснить свой сценарий более подробно. Некоторые возможные подходы включают:
hook_nodeapi ()
(операция «просмотр») из настраиваемого модуля, удаляя записи из массива содержимого в зависимости от роли пользователя. hook_menu_alter ()
на собственный. В нем вы проверяете роль. Если все в порядке, вы просто вызываете стандартный обратный вызов, иначе вы запускаете drupal_goto ()
(если возможно, основываясь на некоторой общей логике). hook_nodeapi ()
, снова реагируя на операцию «просмотр», но вам нужно убедиться, что вы делаете только это для просмотров страниц узла, а не в том случае, если узел просто отображается как тизер вместе с другими. hook_init ()
в настраиваемом модуле, проверьте путь ( arg ()
или $ _ GET ['q']
) и роль, при необходимости выполните drupal_goto ()
. (Остерегайтесь кешированных страниц - если вам нужно их закрыть, используйте вместо этого hook_boot ()
). И т. Д. ... - Я уверен, что есть больше вариантов, поэтому вы можете предоставить более подробную информацию о своей проблеме / цели / сценарии, чтобы дать более точное предложение.
Вы можете создать пользовательский обработчик меню для этой ссылки, а затем в функции, которая запускает этот обработчик, вы можете сделать что-то вроде
if (user->role == 'access granted') {
// do stuff
} else {
drupal_goto('anonymouspage');
}