Програмно запретить создание ноды определенного типа для конкретного пользователя

Главные вкладки

Аватар пользователя iNFerNo iNFerNo 2 июня 2011 в 17:01

Программно запретить создание ноды определенного типа для пользователя определенной роли при условии что для этой роли разрешено создавать, после каких либо действий.

Сделал пока что рулесами когда 1 нода созднаю юзером при создании материала перекидывает автоматом на главную и сообщение типа создавать уже низя...

но хотелось бы как то ссылку убрать со страницы Создать материала.

Комментарии

Аватар пользователя olegmif olegmif 3 июня 2011 в 7:40

может быть hook_node_access?

<?php
function имя_модуля_node_access($node$op$account)  {
  
$type is_string($node) ? $node $node->type;
  if ((
$type == 'тип ноды') && ($op == 'create') && ($account->uid == 'идентификатор пользователя')) {
    return 
NODE_ACCESS_DENY;
  } 
}
?>

у меня сработало - выкидывает пунктик добавить такую-то ноду из меню

пардоньте... не увидел сразу, что у вас Drupal 6. Это я для 7 писал...

Аватар пользователя iNFerNo iNFerNo 21 ноября 2011 в 15:33

"G.A. Vinogradov" wrote:

Воспользуйтесь hook_menu_alter, переопределите access callback для пути node/add/node-type

подскажите примерчик этого

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 21 ноября 2011 в 16:41
<?php
function mymodule_menu_alter(&$items){
  
$items['node/add/answer']['access callback'] = 'mymodule_access'// Устанавливаем собственный обработчик права доступа
  
...
}

function 

mymodule_access(){
  global 
$user;
  if (
$user->uid == 666){
    return 
false// Возвращаем то, что нам нужно
  
}
  return 
true;
}
?>