Drupal:为什么用户管理员无法访问我的模块页面?

时间:2010-12-28 23:41:07

标签: php drupal drupal-6

我正在研究一个drupal 6.x模块,该模块由.module页面中定义的几个页面组成。问题是,当我以管理员身份访问这些页面时,我被拒绝访问。我以为admin(用户1)可以访问任何东西?这里是一些页面的代码:

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

那么如何确保只有管理员才能看到这些网页而其他网页会出现“页面不存在”错误?

编辑:我找到了解决方案here

3 个答案:

答案 0 :(得分:7)

您需要为每个菜单项定义access arguments

有关此主题的信息,请参阅drupal.org documentation

例如,hook_menu可能看起来像这样:

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

答案 1 :(得分:1)

wiifm的答案是正确的,但另一种选择(如果你不想使用'管理站点配置')是创建一个自定义访问回调函数,它检查uid == 1或创建自定义私有。

我不知道什么是最适合你的情况,但你有可能想要像wiifm所说的那样做。

答案 2 :(得分:0)

当您说管理员时,您指的是您为特定用户创建的第一个用户,即您拥有所有权限。无论如何,正如上面所说,即使对于管理员,你必须在菜单项中添加“访问参数”条目,一旦你这样做,如果你做了wiifm所说的,你应该能够通过admin访问菜单项而不是与任何其他用户(除非您将该权限授予其他用户,这是不可能的)。