如何使某些菜单项对某些角色可见?

时间:2012-01-26 18:20:29

标签: drupal-7

在/ drupal / admin / structure / menu / manage / main-menu中,我有一些链接,我只想为具有特定权限的用户显示。

我该怎么做?

在我的模块中,我有

...

$items['resume/joblist'] = array(
  'page callback' => 'ac_resume_job_list',
  'access arguments' => array('view joblist'),
  'title' => 'Job List',
  'description' => 'Job List',
);

...

function ac_resume_permission()
{
  return array("view joblist" => array("title" => "View Job List"));
}

当我在未经许可的情况下进入“恢复/作业列表”用户时,我按预期获得“拒绝访问”,但仍会显示该链接。 enter image description here

2 个答案:

答案 0 :(得分:0)

在Drupal 7中,

hook_perm()已重命名为hook_permission(),您定义的view mylink和您声明为view joblist的{​​{1}}之间存在一些不匹配权限。

您可以将代码更改为更像这样:

function mymodule_menu() {
  $items['mylink'] = array(
    'page callback' => 'mymodule_mylink',
    'access arguments' => array('view mylink'),
    'title' => 'My Link',
    'description' => 'My Link',
  );

  return $items;
}

function mymodule_permission() {
  return array(
    'view mylink' => array(
      'Title' => 'View My Link'
    )
  );
}

清除Drupal缓存后,导航至admin/people/permissions并将新权限分配给您希望能够访问hook_menu()中定义的页面的角色。

完成后,具有该角色的用户将能够访问该页面:)

答案 1 :(得分:0)

我建议使用以下模块:Menu Item Visibility,它完全符合您的需要。