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',
      );
      
      因此,当你给他们
      访问管理页面
      时,你给了他们访问站点构建部分的权限,但没有访问其中的任何项目。解决此问题的快速方法是:

      • 用于将这些菜单项的访问设置更改为他们无权访问的内容。要么自己烫,要么用现有的
      • 您还可以使用主题来隐藏项目

      啊。这也解释了为什么没有显示“报告”部分。它被设置为“访问站点报告”访问权限,而不是“访问管理页面”。我想我走的是另一条路。这似乎是更合适的做法。谢谢啊。这也解释了为什么没有显示“报告”部分。它被设置为“访问站点报告”访问权限,而不是“访问管理页面”。我想我走的是另一条路。这似乎是更合适的做法。谢谢