Drupal自定义节点访问

时间:2010-11-09 19:50:40

标签: drupal drupal-6

我需要在Drupal中进行一些复杂的节点访问,并且我决定使用自己的模块。我需要查看哪些钩子才能访问节点。你有什么例子吗?

2 个答案:

答案 0 :(得分:5)

您所需要的只是hook_access

如果要对所有节点进行访问控制,可以通过一些调整来完成。您可以使用hook_menu_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);
}

答案 1 :(得分:1)

这在Drupal 6中很痛苦 - hook_access只能调整由其所属模块创建的节点类型的访问权限,hook_node_access是Drupal 7中的新功能。

不幸的是,我发现的最佳解决方案是通过核心补丁向access添加hook_nodeapi操作。可以找到详细信息here