烫发挂钩一个以上的内容类型(Hook perm for more than one content

2019-10-23 03:23发布

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',
);
.......
}

任何帮助将高度赞赏。

Answer 1:

通常情况下,你不需要创建内容类型自己的权限,作为节点模块中为您完成此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()一次全部(这样你就不需要任何参数-仅返回每个许可一个字符串你想创建)。



Answer 2:

一般来说,实施多于一种内容类型的模块将返回它从定义的所有权限hook_perm() ; 有没有办法知道哪个内容类型Drupal是要求执行权限。
Drupal的总要求,以模块的所有执行权限,这甚至不能与节点列表; 有只实现了自己的设置页面权限,例如一些模块。



文章来源: Hook perm for more than one content type