Как контролировать доступ к узлам / контенту в drupal 6.X? - PullRequest
1 голос
/ 16 сентября 2011

У меня был сайт, созданный в drupal 6. Все его содержимое размещено в виде узлов страниц. Я создал пользователя с ролью редактора и получил следующие разрешения

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

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

Как я могу это сделать. Я пытался

nodeaccess-6.x-1.3.zip node_privacy_byrole-6.x-1.6.zip

также пробовал content_access-6.x-1.2.zip (но не найти никаких настроек для этого модуля?). Пожалуйста, помогите мне решить эту проблему.

спасибо заранее.

Шаг1.

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

хорошо, я не знаю, есть ли модули, которые поддерживают добавление разрешений на удаление узла, или нет, но попробуйте следующее .....

  • сначала нам нужно создать модуль (не беспокойтесь, это просто), который генерирует новое разрешение, которое вы можете дать любой роли пользователя. Давайте назовем это разрешение «разрешение удаления узла»

    1 - перейти на / sites / all / modules

    2 - создайте новую папку с именем "node_delete_permission" и создайте файлы внутри этой папки со следующими именами "node_delete_permission.info" && "node_delete_permission.module"

    3 - открыть node_delete_permission.info и добавить в него следующее:

    name = node delete permission
    description = node delete permission
    core = 6.x
    

    4 - теперь откройте node_delete_permission.module и добавьте в него следующий код

    <?php
    
    /**
    * Implementation of hook_perm()
    */
    function node_delete_permission_perm() {
      return array("node delete permission") ; 
    } 
    /**
    * Implementation of hook_form_alter
    */
    function node_delete_permission_form_alter($form, $form_state, $form_id) {
         if($form_id == 'node_admin_content') {
           if (!user_access('node delete permission')) {            
              unset($form['admin']['options']['operation']['#options']['delete']); 
           }
         }      
    }
    

    5 - теперь включите ваш новый модуль из (admin / build / modules) и перейдите в (/ admin / user / permissions) .. убедитесь, что у вас сгенерировано новое разрешение под названием «разрешение на удаление узла»

    если все в порядке ... давайте перейдем к следующему шагу

    6 - перейдите к теме "page.tpl.php" и добавьте следующий код вверху этого файла

    <?php
    $arg1 = arg(1) ; 
    $node_path = url( 'node/'.$arg1 , array('absolute' => TRUE)) ;
    if(arg(0) == 'node' && arg(2) == 'delete' && !user_access('node delete permission')){
    drupal_set_message('<div class="message error" > You don\'t have the permission 
       to delete node </div>') ;  
    header("Location: {$node_path}") ; 
    }
    ?>
    

теперь вы можете дать это разрешение любой роли пользователя (/ admin / user / permissions)

ПРИМЕЧАНИЕ:

1 - это не 100% друпийский путь, но я думаю, что это полезно в вашем случае

2- я не тестировал этот код, поэтому вы можете обнаружить синтаксическую ошибку или что-то ... вы можете вернуться ко мне, если нашли это

3- У меня плохой английский, я знаю, и мне жаль это

0 голосов
/ 16 сентября 2011

Включение модуля разрешений на контент, который поставляется с CCK, должен дать вам контроль над тем, какое поле в типе контента страницы можно просматривать, создавать, редактировать или удалять

...