1

Drupal 6.x

4つの異なるコンテンツタイプを管理するこのモジュールがあります。さらに言えば、同じモジュール内の各コンテンツの権限を定義するにはどうすればよいですか?それも可能ですか?各コンテンツタイプのパーミッションを定義する方法がわかりません。cuzhook_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',
);
.......
}

どんな助けでも大歓迎です。

4

2 に答える 2

6

通常、ノードモジュールがで作成するため、コンテンツタイプの権限を自分で作成する必要はありません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()を一度に宣言するだけです(したがって、引数は必要ありません。アクセス許可ごとに1つの文字列を返すだけです。作成するのが好きです)。

于 2010-06-11T21:36:13.593 に答える
1

一般的に、複数のコンテンツタイプを実装するモジュールは、それが定義するすべてのアクセス許可を返しますhook_perm()。Drupalが実装された権限を要求しているコンテンツタイプを知る方法はありません。
Drupalは常に、実装されているすべての権限のリストをモジュールに要求しますが、これはノードに関連付けることさえできませんでした。たとえば、設定ページの権限のみを実装するモジュールがいくつかあります。

于 2010-06-15T19:23:43.733 に答える