是否有可能将匿名用户(或更具体地说,没有“成员”角色的用户)从特定菜单项重定向到我选择的替代节点,可能使用custom_url_rewrite_inbound?Drupal - 使用custom_url_rewrite_inbound更改匿名用户的目的地?
这样就可以让我为会员和非会员提供特定页面的两个版本(这是一个网站特定的事情!)。
干杯。
是否有可能将匿名用户(或更具体地说,没有“成员”角色的用户)从特定菜单项重定向到我选择的替代节点,可能使用custom_url_rewrite_inbound?Drupal - 使用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');
}
你想让整个内容有所不同吗?如果您只想隐藏节点的某些部分,则可以执行除重定向以外的其他操作。 您是否还希望每个节点有一个替代节点,或者整个站点有一个替代节点? – 2010-07-08 08:11:14
我想一个解决方案是将相关文本添加到CCK字段并将其隐藏到非成员(同时保持正文可见)。我很想知道重定向的东西是否可行 - 它能帮助我更好地理解Drupal :) – james6848 2010-07-08 09:23:31