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

Ted*_*Ted 0 php drupal drupal-7 drupal-modules

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

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

我更喜欢 (a) 在不添加另一个 contrib 模块的情况下执行此操作,并且 (b) 在模块级别而不是主题级别(为了安全),但我也有兴趣听到其他方式。

Cli*_*ive 5

您可能可以使用规则来执行此操作,但我个人会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;
}
Run Code Online (Sandbox Code Playgroud)