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
Drupal自定义节点访问_Drupal_Drupal 6 - Fatal编程技术网

Drupal自定义节点访问

Drupal自定义节点访问,drupal,drupal-6,Drupal,Drupal 6,我需要在Drupal中进行一些复杂的节点访问,我已经决定扮演我自己的模块。为了允许访问节点,我需要查看哪些挂钩。你有什么例子吗。你只需要 如果您想对所有节点进行访问控制,只需稍加调整即可。您可以使用hook\u menu\u alter将自定义访问控制功能添加到“node/%node”。它可能是这样的: function module_menu_alter($items) { $items['node/%node']['access callback'] = 'module_node_acc

我需要在Drupal中进行一些复杂的节点访问,我已经决定扮演我自己的模块。为了允许访问节点,我需要查看哪些挂钩。你有什么例子吗。

你只需要

如果您想对所有节点进行访问控制,只需稍加调整即可。您可以使用
hook\u menu\u alter
将自定义访问控制功能添加到“node/%node”。它可能是这样的:

function module_menu_alter($items) {
  $items['node/%node']['access callback'] = 'module_node_access';
}

function module_node_access($op, $node) {
  if ($special_case) {
    return FALSE;
  }
  elseif ($special_case_2) {
    return TRUE;
  }
  // Default, let Drupal handle it.
  return return node_access($op, $node);
}
你所需要的只是

如果您想对所有节点进行访问控制,只需稍加调整即可。您可以使用
hook\u menu\u alter
将自定义访问控制功能添加到“node/%node”。它可能是这样的:

function module_menu_alter($items) {
  $items['node/%node']['access callback'] = 'module_node_access';
}

function module_node_access($op, $node) {
  if ($special_case) {
    return FALSE;
  }
  elseif ($special_case_2) {
    return TRUE;
  }
  // Default, let Drupal handle it.
  return return node_access($op, $node);
}

这在Drupal 6中有点痛苦-
hook_访问
只能调整由其所属模块创建的节点类型的访问,而
hook_节点访问
在Drupal 7中是新的


不幸的是,我找到的最佳解决方案是通过一个核心补丁,在
hook\u nodeapi
中添加一个
access
op。详细信息可以找到。

这在Drupal 6中是一件痛苦的事情-
hook\u访问
只能调整它所属模块创建的节点类型的访问,而
hook\u node\u访问
在Drupal 7中是新的


不幸的是,我找到的最佳解决方案是通过一个核心补丁,在
hook\u nodeapi
中添加一个
access
op。可以找到详细信息。

没有。“此挂钩允许节点模块限制对其定义的节点类型的访问。”如果您试图调整对CCK节点类型的访问,
hook\u access
在您的自定义模块中不起作用,因为您的自定义模块没有定义节点类型。是的,我花了一天的时间试图让它起作用,直到我偶然发现一个解释为什么它不起作用。你可能会认为在文档页面中会有更突出的解释…@will,更新了关于如何为所有节点推出自己的访问模块的详细信息。这是一个有趣的方法。我得试一试,不行。“此挂钩允许节点模块限制对其定义的节点类型的访问。”如果您试图调整对CCK节点类型的访问,
hook\u access
在您的自定义模块中不起作用,因为您的自定义模块没有定义节点类型。是的,我花了一天的时间试图让它起作用,直到我偶然发现一个解释为什么它不起作用。你可能会认为在文档页面中会有更突出的解释…@will,更新了关于如何为所有节点推出自己的访问模块的详细信息。这是一个有趣的方法。我得试一试,不喜欢修补核心。我要做一些重要的思考。是的,我也不喜欢这样做。D7最终修复了这个明显的遗漏。这可能不是最佳实践,但如果它们不符合我的条件,我可以使用hook\u view并返回其他内容吗?hook\u nodeapi()就是我想要的need@ceejayoz:您真的不需要修补core,请参见我的示例。我相信这就是D6中有多少节点访问模块工作的原因。我不喜欢修补内核。我要做一些重要的思考。是的,我也不喜欢这样做。D7最终修复了这个明显的遗漏。这可能不是最佳实践,但如果它们不符合我的条件,我可以使用hook\u view并返回其他内容吗?hook\u nodeapi()就是我想要的need@ceejayoz:您真的不需要修补core,请参见我的示例。我相信这就是D6中工作的节点访问模块的数量。