Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Drupal-使用自定义url\u重写\u入站更改匿名用户的目的地?_Php_Drupal - Fatal编程技术网

Php Drupal-使用自定义url\u重写\u入站更改匿名用户的目的地?

Php Drupal-使用自定义url\u重写\u入站更改匿名用户的目的地?,php,drupal,Php,Drupal,是否可以将匿名用户(或者更具体地说,没有“成员”角色的用户)从特定菜单项重定向到我选择的备用节点,可能使用自定义url\U重写\U入站 这将使我能够为成员和非成员提供两个版本的特定页面(这是一个特定于站点的东西!) 干杯。您可以为该链接创建一个自定义菜单处理程序,然后在运行该处理程序的函数中,您可以创建如下内容 if (user->role == 'access granted') { // do stuff } else { drupal_goto('anonymouspage

是否可以将匿名用户(或者更具体地说,没有“成员”角色的用户)从特定菜单项重定向到我选择的备用节点,可能使用自定义url\U重写\U入站

这将使我能够为成员和非成员提供两个版本的特定页面(这是一个特定于站点的东西!)


干杯。

您可以为该链接创建一个自定义菜单处理程序,然后在运行该处理程序的函数中,您可以创建如下内容

if (user->role == 'access granted') {

  // do stuff

} else {

drupal_goto('anonymouspage');

}

使用
custom\u url\u rewrite\u inbound()
进行此操作类似于使用大锤调整扭曲图片的角度-可以这样做,但操作繁琐且有造成某些损坏的风险;)

更好的解决方案取决于您想要准确实现什么,以及您需要多长时间(即多少个节点)完成一次,因此您应该更详细地解释您的场景。一些可能的办法包括:

  • 使用两个版本的数据/字段“丰富”节点,并根据用户角色调整实际输出
    • 如果使用CCK,则可以为此使用字段权限设置
    • 您还可以通过自定义节点模板在主题层中进行一些调整
    • 另一种方法是通过自定义模块中的hook_nodeapi()(操作“视图”),根据用户角色从内容数组中删除条目
  • 根据用户角色提供到其他节点的显式重定向(您的显式问题)
    • 通过
      hook\u menu\u alter()
      将标准节点页回调替换为自定义回调。在其中,您检查角色。如果没有问题,只需调用标准回调,否则发出一个
      drupal_goto()
      (如果可能,基于一些通用逻辑)
    • 如果“特殊”情况很少,您也可以通过
      hook_nodeapi()
      执行此操作,再次对操作“view”作出反应,但您需要确保仅对节点页面视图执行此操作,而不是仅在节点与其他节点一起显示为摘要时执行此操作
    • 在自定义模块中实现
      hook_init()
      ,检查路径(
      arg()
      $\u GET['q']
      )和角色,根据需要发出
      drupal_goto()
      。(注意缓存页面-如果需要覆盖这些页面,请使用
      hook\u boot()

等等我相信还有更多的选择,因此您可能希望提供有关您的问题/目标/场景的更多详细信息,以便提供更精确的建议。

您希望整个内容有所不同吗?如果只想隐藏节点的某些部分,则可以执行重定向以外的操作。另外,您是否希望每个节点都有一个备用节点,或者整个站点都有一个帐户?我想一个解决方案是将相关文本添加到CCK字段中,并对非成员隐藏该文本(同时保持正文可见)。不过,我很想知道重定向是否可行——这将帮助我更了解Drupal:)