Ограничить пункт меню только для определенного элемента, доступного после входа в систему, и, возможно, для роли
Вот меню, которое у меня есть.
$items['start'] = array(
'title' => 'Take A Test',
'page callback' => 'qe_start',
'access callback' => TRUE,
'expanded' => TRUE,
);
return $items;
Что должно быть передано в этом, чтобы сделать его доступным для роли/зарегистрированного пользователя?
'access arguments' => array('content'),
И как я могу сделать это для callback_menu?
2 answers
Если вы на самом деле просто хотите проверить, вошел ли пользователь в систему, и не хотите настраивать разрешения, вы можете установить обратный вызов доступа на "user_is_logged_in":
$items['start'] = array(
'title' => 'Take A Test',
'page callback' => 'qe_start',
'access callback' => 'user_is_logged_in',
'expanded' => TRUE,
);
Обычно вы определяете разрешение для своего модуля/страницы с помощью hook_permission()
а затем назначьте это разрешение определенной роли/набору ролей в разделе администратора.
Затем вы можете использовать это разрешение в своем меню обратного вызова, зная, что только разрешенные вами роли могут получить доступ к странице:
function qe_permission() {
return array(
'take a test' => array(
'title' => t('Take a test')
),
);
}
function qe_menu() {
$items['start'] = array(
'title' => 'Take A Test',
'page callback' => 'qe_start',
'access arguments' => array('take a test'),
'type' => MENU_CALLBACK,
'expanded' => TRUE,
);
return $items;
}
Страница администратора разрешений находится по адресу http://mysite.com/admin/people/permissions на всякий случай, если вы его еще не видели.