#php #drupal #drupal-6 #module #drupal-modules
#php #drupal #drupal-6 #модуль #drupal-модули
Вопрос:
на основе некоторого условия я хочу предоставить доступ к модулю.
if(abc == abc) {
//give access to module xyz.
}
Комментарии:
1. Не могли бы вы подробнее рассказать о том, чего вы пытаетесь достичь. Ваш вопрос и код очень расплывчаты.
Ответ №1:
В Drupal нет такой концепции, как предоставление доступа ко всему модулю, только к страницам, которые определяет модуль. Обычно это делается путем реализации hook_menu()
для определения страницы (страниц), а затем предоставления access callback
или access arguments
.
Первая определяет функцию, которая будет вызвана для принятия решения о доступе:
function mymodule_menu() {
$items['some/path'] = array(
'title' => 'Some Title',
'page callback' => 'mymodule_callback',
'access callback' => 'mymodule_some_path_access'
);
return $items;
}
function mymodule_some_path_access() {
global $user;
if ($user->foo == 'bar') {
// Access allowed, return TRUE
return TRUE;
}
// Access not allowed, return FALSE
return FALSE;
}
Второй определяет аргументы, которые будут переданы user_access
функции. Обычно это зависит от разрешений, предоставляемых вашим модулем:
function mymodule_menu() {
$items['some/path'] = array(
'title' => 'Some Title',
'page callback' => 'mymodule_callback',
'access arguments' => array('access mymodule')
);
return $items;
}
function mymodule_perm() {
return array(
'access mymodule'
);
}
Во втором примере пользователю будет отказано в доступе, если у него нет разрешения «access mymodule» (как определено в области администрирования разрешений Drupal).
Надеюсь, это поможет