2009-09-16 2 views
1

Лицо, управляющее сайтом, над которым я работаю, хочет решить, какие блоки идут туда. В Drupal уже есть хороший интерфейс (выбор области из раскрывающегося списка), но я бы хотел скрыть определенные блоки от этого пользователя. Это блоки, которые он не должен передвигать.Модуль Drupal для управления блоками веб-мастеров?

Afaik это невозможно через Разрешения. Есть ли модуль, который позволяет точно контролировать управление блоками? Я предпочел бы не написать пользовательский интерфейс ...

Спасибо, Stef

ответ

0

Возьмите эти блоки из регионов и вставлять их в шаблон вручную с помощью module_invoke().

$block = module_invoke('module_name', 'block', 'view', 'block name or ID'); 

print '<h2>' . $block['subject'] . '</h2>'; 
print $block['content']; 
+0

Как это поможет веб-мастеру управлять этими блоками? – stef

+0

Извините, я понимаю, что вы имеете в виду: скрывая «запрещенные» блоки в шаблонах, получил его. , если есть другой вариант id, хотелось бы услышать его иначе это приемлемо для ответа – stef

-1

Возможно, дайте Blockqueue попробовать? Я никогда не использовал его, но, похоже, он охватывает ваш прецедент.

+0

Не похоже, что это позволяет блокировать определенные блоки. – ceejayoz

+0

Вы правы. Глядя на код, мое впечатление, что есть отдельные права на добавление и редактирование очереди, неверно. Это можно было бы изменить, но тематический подход, вероятно, проще. – Grayside

3

Ну, вы можете создать простой пользовательский модуль, как это (замените my_module с именем вашего пользовательского модуля, очевидно):

function my_module_perm() 
    { 
     return array('view special blocks'); 
    } 



    function my_module_form_alter(&$form, &$form_state, $form_id) { 
     if ($form_id == 'block_admin_display_form') { 
     if(!user_access('view special blocks')) { 
      $special_blocks = array(); // Specially hidden blocks go here 

      foreach($special_blocks as $block) { 
       unset($form[$block]); 
      } 
     } 
     } 
    } 

И потом:

  1. Добавьте блоки, которые вы хотите скрыть в массив $special_blocks (это в основном идентификатор блока div минус block_)
  2. Создайте новую учетную запись и, возможно, новую роль для этого парня
  3. Разрешение мудр, роль нового пользователя должен иметь access administration pages и administer blocks, но не должны иметь view special blocks

Проверено на Drupal 6.6, должны работать на других версиях 6.x (и, может быть, 5. x с несколькими изменениями)

+0

Работает в D7 тоже ... слегка изменен, потому что hoom_perm стал hook_permission;) Спасибо! – SomethingOn

Смежные вопросы