Hook烫发多种内容类型 [英] Hook perm for more than one content type
问题描述
Drupal 6.x
我有这个模块管理四种不同的内容类型。对于这个问题,如何为同一个模块中的每个内容定义权限?甚至有可能吗我不知道如何定义每个内容类型的权限cuz hook_perm必须使用模块名称命名,并且没有任何参数(如hook_access $ node)返回基于内容类型的权限。这是我想做的 -
function mymodule_perm()
{
if(content1)
return array(
'create content1 node',
'edit content1 nodes',
'delete content1 nodes',
);
if(content2)
return array(
'create content2 node',
'edit content2 nodes',
'delete content2 nodes',
) ;
if(content3)
return array(
'create content3 node',
'edit content3 nodes',
'delete content3 nodes',
) ;
.......
}
任何帮助将是高度的
通常,您不需要自己创建内容类型的权限,因为节点模块在< a href =http://api.drupal.org/api/function/node_perm/6 =noreferrer> node_perm()
。对于您在 hook_node_info()$ c $中声明的每种内容类型c>
,节点模块将自动创建一组固定的权限,如下所示:
$ perms [] = '创建 '。 $ name。'content';
$ perms [] ='删除自己'。 $ name。'content';
$ perms [] ='删除任何'。 $ name。'content';
$ perms [] ='编辑自己'。 $ name。'content';
$ perms [] ='编辑任何'。 $ name。'content';
此外,您可以在模块中声明任何数量的附加权限 hook_perm ()
实现(只要它们是唯一的),并根据需要在代码中使用它们。
这里重要的是,权限本身不会太多 - 它只是一个名称,将显示在权限页面上,允许将其归因于角色。它们只能通过 user_access()使用它们的代码变得有意义
电话。
所以,如果你想为自己的每个内容类型创建一个特殊的新的权限你只需一次在 hook_perm()
中声明它们(所以你不需要任何参数 - 只要返回一个字符串,你要创建的权限) / p>
Drupal 6.x
I have this module that manages four different content types. For that matter, how do I define permission for each content within the same module? Is that even possible? I can't figure out how to define permission for each content type cuz hook_perm has to be named with module name and it doesn't have any argument(like hook_access $node) to return permission base on content type. Here's how I'd like to do -
function mymodule_perm()
{
if(content1)
return array(
'create content1 node',
'edit content1 nodes',
'delete content1 nodes',
);
if(content2)
return array(
'create content2 node',
'edit content2 nodes',
'delete content2 nodes',
);
if(content3)
return array(
'create content3 node',
'edit content3 nodes',
'delete content3 nodes',
);
.......
}
Any help would be highly appreciated.
Normally you do not need to create permissions for content types yourself, as the node module does this for you in node_perm()
. For every content type you declare in hook_node_info()
, the node module will automatically create a fixed set of permissions as follows:
$perms[] = 'create '. $name .' content';
$perms[] = 'delete own '. $name .' content';
$perms[] = 'delete any '. $name .' content';
$perms[] = 'edit own '. $name .' content';
$perms[] = 'edit any '. $name .' content';
Besides that, you can declare any number of additional permissions in your modules hook_perm()
implementation (as long as they are unique) and use those in your code as you wish.
The important thing here is that a permission does not do much by itself - it is just a name that will show up on the permissions page, allowing it to be attributed to roles. They only become 'meaningful' by code that uses them via user_access()
calls.
So if, for example, you wanted to create a special, new permission for each of your content types yourself, you would just declare them in hook_perm()
all at once (so you do not need any argument - just return one string per permission you'd like to create).
这篇关于Hook烫发多种内容类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!