我有一个作者应该能够编辑的节点表单,除非某些条件为真。对于作者,我想在这些条件下删除“编辑”选项卡。高级用户仍然可以使用“编辑”选项卡。
hook_menu_alter()
函数对我不起作用,因为它只在菜单构建之前被调用,然后才会被放入缓存中。
我更愿意(a)这样做而不添加另一个contrib模块和(b)在模块级别,而不是主题级别(为安全性),但我也有兴趣听取其他方式。
答案 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;
}