Использование custom_url_rewrite_inbound()
для этого было бы несколько похоже на использование кувалды для регулировки угла изогнутого изображения - это можно сделать, но это громоздко и сопряжено с риском причинения некоторого ущерба;)
Лучшее решение зависит от того, чего именно вы хотите достичь, и от того, как часто (то есть для скольких узлов) вам нужно это делать, поэтому вам следует объяснить свой сценарий более подробно. Некоторые возможные подходы включают в себя:
- «Обогащайте» свои узлы данными / полями для обеих версий и корректируйте фактический вывод в зависимости от роли пользователя.
- Если вы используете CCK, вы можете использовать для этого настройки разрешений полей.
- Вы также можете внести некоторые коррективы в слой темы с помощью пользовательских шаблонов узлов.
- Другой подход - использовать
hook_nodeapi()
(операция 'представление') из пользовательского модуля, удаляя записи из массива содержимого в зависимости от роли пользователя.
- Обеспечение явного перенаправления на другие узлы в зависимости от роли пользователя (ваш явный вопрос)
- заменить стандартный обратный вызов страницы узла через
hook_menu_alter()
на пользовательский. В этом вы проверяете роль. Если все в порядке, вы просто вызываете стандартный обратный вызов, иначе вы запускаете drupal_goto()
(основываясь на некоторой общей логике, если это возможно).
- Если «особые» случаи редки, вы можете сделать это также с помощью
hook_nodeapi()
, снова реагируя на операцию «просмотр», но вам нужно убедиться, что вы делаете это только для просмотров страницы узла, а не если узел просто отображается как тизер вместе с другими.
- Реализуйте
hook_init()
в пользовательском модуле, проверьте путь (arg()
или $_GET['q']
) и роль, введите drupal_goto()
при необходимости. (Остерегайтесь кэшированных страниц - если вам нужно их покрыть, используйте hook_boot()
).
Etc. ... - Я уверен, что есть больше вариантов, поэтому вы можете предоставить более подробную информацию о вашей проблеме / цели / сценарии, чтобы дать более точное предложение.