我正在研究一个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。
答案 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访问菜单项而不是与任何其他用户(除非您将该权限授予其他用户,这是不可能的)。