Drupal的6.x的
我有这个模块,管理四个不同的内容类型。 对于这个问题,我该如何定义权限在同一模块中的每个内容? 是否可能? 我无法弄清楚如何定义权限每个内容类型的Cuz hook_perm必须与模块名命名,并且它没有任何参数(如hook_access $节点)对内容类型允许返回基地。 以下是我想要做的 -
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',
);
.......
}
任何帮助将高度赞赏。
通常情况下,你不需要创建内容类型自己的权限,作为节点模块中为您完成此node_perm()
对于在声明每个内容类型hook_node_info()
如下所述节点模块将自动创建一组固定的权限:
$perms[] = 'create '. $name .' content';
$perms[] = 'delete own '. $name .' content';
$perms[] = 'delete any '. $name .' content';
$perms[] = 'edit own '. $name .' content';
$perms[] = 'edit any '. $name .' content';
除此之外,你可以声明任意数量的在你的模块额外的权限hook_perm()
执行(只要它们是唯一的),并根据需要使用那些在你的代码。
这里最重要的是,一个权限本身并不做太多 - 它只是将显示的权限页面上,允许它归因于角色的名称。 他们只由通过使用这些代码成为“有意义” user_access()
调用。
所以,如果,例如,你想创建一个特殊的,新的许可,您的每个内容类型你自己的,你只需要声明他们hook_perm()
一次全部(这样你就不需要任何参数-仅返回每个许可一个字符串你想创建)。
一般来说,实施多于一种内容类型的模块将返回它从定义的所有权限hook_perm()
; 有没有办法知道哪个内容类型Drupal是要求执行权限。
Drupal的总要求,以模块的所有执行权限,这甚至不能与节点列表; 有只实现了自己的设置页面权限,例如一些模块。