Drupal菜单权限问题
我正在为我的客户创建一个管理模块,让他们能够访问与内容相关的一些管理功能。我首先通过实现Drupal菜单权限问题,drupal,drupal-6,permissions,menu,Drupal,Drupal 6,Permissions,Menu,我正在为我的客户创建一个管理模块,让他们能够访问与内容相关的一些管理功能。我首先通过实现hook\u perm在模块中添加一些权限: function mymodule_perm() { return array( 'manage projects', ); } 然后,我可以通过添加到已存在的管理部分来创建我的菜单: function mymodule_menu() { $items['admin/projects'] = array(
hook\u 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;
}
这将使用“添加项目”子节将项目部分添加到“管理”区域。一切都好
我想要的行为是,我的客户只有在登录时才能看到Projects部分。我通过勾选模块权限部分中认证用户的“管理项目”权限来实现这一点。现在,为了让我的客户端实际访问管理区域,我还需要在“用户权限”部分的“系统模块”下勾选“访问管理页面”。这非常有效,当我以我的客户身份登录时,我只能看到“管理”区域中的“项目”部分。但有一件事,在左列显示的“我的导航”菜单中,我可以看到以下项目:
- Administer
- Projects
- Content management
- Site building
- Site configuration
- User management
我只希望看到管理和项目项,而不是其他项。当我点击内容管理时,我会看到一个标题为“内容管理”的页面,没有任何子部分。对于站点构建、站点配置和用户管理也是如此。真正奇怪的是,没有显示报告,这也是一个顶级管理部分
除了“我的项目”部分之外,为什么还会显示这些其他项目?如果我没有以管理员身份登录,如何使它们停止显示?我不清楚菜单路由器显示这些项目的确切原因。但我也许能帮上忙 你为什么不改变你的道路,比如:
projects/add
projects/%/edit
这类似于节点模块的菜单挂钩。这可能不是你想要的,但如果你不想让这些用户访问管理内容,这可能是正确的方法。我不确定菜单路由器显示这些内容的确切原因。但我也许能帮上忙 你为什么不改变你的道路,比如:
projects/add
projects/%/edit
这类似于节点模块的菜单挂钩。这可能不是你想要的,但如果你不想让这些用户访问管理内容,这可能是正确的方法。你的问题是允许他们查看这些页面 从系统模块的
挂钩菜单
:
$items['admin/build'] = array(
'title' => 'Site building',
'description' => 'Control how your site looks and feels.',
'position' => 'right',
'weight' => -10,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('access administration pages'),
'file' => 'system.admin.inc',
);
因此,当你给他们访问管理页面
时,你给了他们访问站点构建部分的权限,但没有访问其中的任何项目。解决此问题的快速方法是:
- 用于将这些菜单项的访问设置更改为他们无权访问的内容。要么自己烫,要么用现有的
- 您还可以使用主题来隐藏项目
- 您的问题是允许他们查看这些页面
从系统模块的
挂钩菜单
:
$items['admin/build'] = array(
'title' => 'Site building',
'description' => 'Control how your site looks and feels.',
'position' => 'right',
'weight' => -10,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('access administration pages'),
'file' => 'system.admin.inc',
);
因此,当你给他们访问管理页面
时,你给了他们访问站点构建部分的权限,但没有访问其中的任何项目。解决此问题的快速方法是:
- 用于将这些菜单项的访问设置更改为他们无权访问的内容。要么自己烫,要么用现有的
- 您还可以使用主题来隐藏项目