我有一个节点类型,只有在超出其角色权限的特定情况下才能由用户编辑。我在自定义模块中这样做。
我想删除甚至可以看到编辑标签的功能,而不仅仅是在表单中添加验证功能,以便在提交表单后提醒用户。
我需要添加某种访问功能。有谁知道怎么做?
提前致谢。
- 更新 -
我现在有两种方法可行。
1)使用hook_nodeapi:
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch($op) {
case 'prepare':
if(!mymodule_access_function($node)) {
$_REQUEST['destination'] = 'my_access_denied_page';
// rest of function
2)我可以使用hook_menu_alter将访问回调函数插入到菜单项中。
就我的目的而言,2更有意义。我想我会拼出(1)的代码,因为这是在这个页面上给出的答案并且它有效。
答案 0 :(得分:3)
对于选项卡可见性,您可以更改从模块挂钩到主题模板或css补丁的任何位置的主题输出。根据数据可见性和性能问题的要求,某些解决方案比其他解决方案更好。我们需要更多关于您需要什么样的处理的细节。
要进行访问, hook_nodeapi() , $ op 'prepare',此时针对$ node运行您的自定义代码,并决定你想做什么(如果没有要求,或者访问被拒绝的页面,重定向到另一个表单)。
编辑:重定向通常使用 $ _ REQUEST ['destination'] ='destination / alias' (不会中断执行),有时 drupal_goto( 'destination / alias') (中断执行)是合适的,但通常不起作用。请在项目中跟踪重定向,因为在多种逻辑条件下,您可能会遇到不必要且难以调试的行为。
答案 1 :(得分:1)
每个内容类型在admin/user/permissions
中都有默认权限设置,用于创建,编辑,删除节点。您可以分配给匿名或经过身份验证的用户。如果要分配给组,则创建另一个角色并分配如上所述的权限。