【发布时间】:2010-10-20 03:58:56
【问题描述】:
我正在为我的客户创建一个管理模块,让他们可以访问有关其内容的某些管理功能。我首先通过实现hook_perm 在我的模块中添加一些权限:
function mymodule_perm()
{
return array(
'manage projects',
);
}
然后我可以通过添加到已经存在的 admin 部分来创建我的菜单:
function mymodule_menu()
{
$items['admin/projects'] = array(
'title' => 'Projects',
'description' => 'Manage your projects.',
'page callback' => 'manage_projects_overview',
'access callback' => 'user_access',
'access arguments' => array('manage projects'),
'type' => MENU_NORMAL_ITEM,
'weight' => -100,
);
$items['admin/projects/add'] = array(
'title' => 'Add project',
'access arguments' => array('manage projects'),
'page callback' => 'mymodule_projects_add',
'type' => MENU_NORMAL_ITEM,
'weight' => 1,
);
return $items;
}
这将向管理区域添加一个 Projects 部分,其中包含一个 Add project 子部分。都很好。
我想要的行为是我的客户在登录时只能看到“项目”部分。我通过在模块的权限部分中为经过身份验证的用户勾选“管理项目”权限来完成此操作。现在要让我的客户实际访问管理区域,我还需要在用户权限部分的“系统模块”下勾选“访问管理页面”。这很好用,当我以客户身份登录时,我只能在管理区域中看到 Projects 部分。不过有一件事,在左栏显示的导航菜单中,我可以看到以下项目:
- Administer
- Projects
- Content management
- Site building
- Site configuration
- User management
我只期待看到管理和项目项目,而不是其他项目。当我点击例如内容管理我得到一个内容管理标题页面,没有子部分。站点建设、站点配置和用户管理也是如此。真正奇怪的是没有显示报告,这也是顶级管理部分。
除了我的“项目”部分之外,为什么还会显示这些其他项目?如果我没有以管理员身份登录,如何让它们停止显示?
【问题讨论】:
标签: drupal drupal-6 permissions menu