2010-12-28 7 views
0

私は、モジュールページで定義されているようないくつかのページからなるdrupal 6.xモジュールを扱っています。問題は、それらのページを管理者として訪問するとアクセスが拒否されるということです。私は管理者(ユーザー1)が何かにアクセスできると思った?ここでは、ページの一部のコード:Drupal:なぜユーザー管理者は私のモジュールページにアクセスできないのですか?

function foobar_menu() 
{ 
$items['admin/foobar'] = array(
    'title' => 'administer foobar', 
    'page callback' => 'foobarpage', 
); 

$items['admin/foobar/baz'] = array(
    'title' => 'Do baz', 
    'page callback' => 'drupal_get_form', 
    'page arguments' =>array('foobarpage'), 
); 

は、どのように私は、唯一の管理者はこれらのページと残りはエラーを「ページが存在しません」を見ることができていることを確認していますか?

EDIT:解決策が見つかりましたhere

答えて

7

メニュー項目ごとにaccess argumentsを定義する必要があります。

この件に関するdrupal.org documentationを参照してください。例えば

あなたはhook_menuは、次のようになります。

$items['admin/foobar'] = array(
    'title' => 'administer foobar', 
    'page callback' => 'foobarpage', 
    'access arguments' => array('administer site configuration'), 
); 
+0

しかし、管理者は彼に割り当てられた権限を持つことはできません。つまり、権限ページに管理者列はありません。 – mmersz

+2

管理者には常にすべての権限が与えられます。管理者だけに「サイト設定の管理」権限を与えたい場合は、他の誰にも割り当てないでください。 –

+0

スコットは正しいです。いずれにせよ、私はあなたのサイトのランダムな人に上記の許可を与えることを習慣にしていません。サイトの設定を変更すると信じている場合は、確実にモジュールのページにアクセスすることができます。それがユーザー#1だけであれば、そうなります。 – wiifm

1

wiifmの答えは正しいのですが、他の選択肢は、(あなたが「ADMINISTERサイトの構成」を使用しない場合)、カスタムを作成することですuid == 1をチェックするか、カスタムprivを作成するアクセスコールバック関数。

あなたのケースに最適なものはわかりませんが、wiifmが示唆するようにしたいと考えています。

+0

しかし、私は他のユーザーがページにアクセスすることを嫌いです。ただ管理者です。管理者がデフォルトでそのアクセス権を持っている場合、管理者としてログインしているときにそのページを使用できないのはなぜですか? – mmersz

0

あなたがadminと言うときは、作成した最初のユーザーか、すべての特権を与えた特定のユーザーを意味します。とにかく、wiifmが上で述べたように、管理者であっても、メニュー項目に 'access argument'エントリを追加しなければなりません。もしwiifmが言うことをするならば、adminでメニュー項目にアクセスできるはずです他のユーザーには許可されません(あなたが他のユーザーに許可を与えている場合を除きます)。

関連する問題