Пожалуйста, потерпите этого новичка в Drupal API, пока я объясню кое-что из предыстории!
Я экспериментировал с приведенным ниже кодом, чтобы создать два отдельных ответа, когда мои пользователи нажимают ссылку создания настраиваемого узла. По умолчанию открывается страница, на которой пользователи могут выполнить обычные шаги по созданию узла. Что делает мой модуль, так это проверяет, есть ли у пользователя определенные разрешения, и либо разрешает им продолжить создание узла, либо выдает страницу с отказом в доступе.
function mymodule_menu_alter(&$items) {
$items["node/add/page/%"]['access callback'] = 'mymodule_access_callback';
}
function mymodule_access_callback(){
if( user_access('open sesame') ){
drupal_set_message("successfully intecepting new node creation");
return true;
}
return false;
}
Узел / добавление / страница успешно заблокирован, но это происходит в обоих случаях. Оператор if определяет, есть ли у пользователя определенное разрешение, и в нем я добавил return true, что привело к следующей ошибке:
Неустранимая ошибка: require_once () [function.require]: Не удалось открыть '/node.pages.inc' (include_path = '.:') в /var/www/vhosts/mysite.co.uk/httpdocs/includes/menu .inc в строке 347
Как новичок, я не уверен, что мне нужно делать, чтобы избежать доступа к странице с отказом в доступе для правильных пользователей.
hook_menu_alter()
в этом случае. - person apaderno   schedule 03.12.2011