Как сделать определенные пункты меню видимыми для определенных ролей? - PullRequest
1 голос
/ 26 января 2012

В / 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 голосов
/ 29 января 2015

Я рекомендую использовать следующий модуль: Пункт меню Visibility , он делает именно то, что вам нужно.

0 голосов
/ 26 января 2012

hook_perm() был переименован в hook_permission() в Drupal 7, и есть небольшое несоответствие между 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().

Как только вы закончите, пользователи с этой ролью смогут получить доступ к странице:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...