我正在为我的客户机创建一个管理模块,使他们能够访问与其内容相关的一些管理功能。我首先在模块中添加一些权限,然后实现
hook_perm
:
function mymodule_perm()
{
return array(
'manage projects',
);
}
然后我可以通过添加到
管理员
已存在的部分:
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;
}
这将增加一个
项目
到管理区域的分区
添加项目
分部。一切都好。
我想要的行为是,我的客户机只有在登录时才能看到项目部分。我通过在我的模块的权限部分勾选认证用户的“管理项目”权限来实现这一点。现在,要让我的客户机实际访问管理区域,我还需要在“用户权限”部分的“系统模块”下勾选“访问管理页”。这很好,当我以客户身份登录时,我只能看到
项目
行政区的分区。不过,有一件事是,在我的导航菜单(如左列所示)中,我可以看到以下各项:
- Administer
- Projects
- Content management
- Site building
- Site configuration
- User management
我只希望看到“管理”和“项目”项目,而不是其他项目。当我单击例如“内容管理”时,会得到一个标题为“页面”的内容管理,没有子部分。对于站点构建、站点配置和用户管理也是如此。真正奇怪的是没有显示报表,这也是一个顶级管理部分。
除了我的项目部分之外,为什么还有其他项目要显示,如果我没有以管理员身份登录,如何使它们停止显示?