Drupal:如何在特定条件下删除节点的“编辑”选项卡?

时间:2012-01-13 02:58:22

标签: php drupal drupal-7 drupal-modules

我有一个作者应该能够编辑的节点表单,除非某些条件为真。对于作者,我想在这些条件下删除“编辑”选项卡。高级用户仍然可以使用“编辑”选项卡。

hook_menu_alter()函数对我不起作用,因为它只在菜单构建之前被调用,然后才会被放入缓存中。

我更愿意(a)这样做而不添加另一个contrib模块和(b)在模块级别,而不是主题级别(为安全性),但我也有兴趣听取其他方式。

1 个答案:

答案 0 :(得分:4)

您可以使用Rules执行此操作,但我个人会在自定义模块中使用hook_node_access()

function MYMODULE_node_access($node, $op, $account) {
  if ($op == 'edit') {
    if ($some_condition) {
      return NODE_ACCESS_ALLOW;
    }
    return NODE_ACCESS_DENY;
  }
  return NODE_ACCESS_IGNORE;
}