【问题标题】:How do I make certain menu items visible to certain roles?如何使某些菜单项对某些角色可见?
【发布时间】:2012-01-26 18:20:29
【问题描述】:

在 /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"));
}

当我在未经许可的情况下转到用户下的“简历/作业列表”时,我按预期得到“拒绝访问”,但仍然显示链接。

【问题讨论】:

  • 我找到了一个完全符合我需要的模块drupal.org/project/menu_per_role 启用模块后,只需在“限制项目可见性”下编辑您想要的链接(我无法回答自己的问题)又问了 6 个小时,我不想让任何人浪费他们的时间,所以我将其发布为评论)

标签: drupal-7


【解决方案1】:

hook_perm() 在 Drupal 7 中重命名为 hook_permission(),您定义的 view mylink 和您声明为权限的 view joblist 之间存在一些不匹配。

您可以将代码更改为如下所示:

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() 中定义的页面的角色。

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

【讨论】:

  • 当用户没有被授权时,我仍然可以看到菜单项。
  • 我添加了一张我想要做的图片。
【解决方案2】:

我建议使用以下模块:Menu Item Visibility,它完全满足您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2022-11-26
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多