Как ограничить управление блоками по ролям?


На сайте Drupal 7 я хочу предоставить пользователям с определенной ролью разрешение на управление некоторыми (но не всеми) блоками. Более конкретно, я хочу разрешить редактирование только блоков, предоставляемых модулем Nodeblock.

Я, вероятно, могу многое сделать с помощью hook_form_alter, но, возможно, есть более чистый способ (или даже модуль) указать разрешения на редактирование на уровне блока.

Author: Pierre.Vriens, 2011-06-09

2 answers

Взгляните на Заблокировать доступ.

Со страницы проекта:

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

 1
Author: Shoaib Nawaz, 2012-03-06 14:43:24

Часть вашего вопроса - "... только хочу разрешить редактирование блоков, предоставляемых модулем Nodeblock". Принимая во внимание, что цель этого модуля такова (со страницы проекта):

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

Вместе с "... Я хочу предоставить пользователям с определенной ролью разрешение на управление некоторыми (но не всеми) блоками..." (как и в вашем вопросе), похоже, что перевод (краткое изложение) вашего вопроса выглядит примерно так" Как я могу разрешить контент-менеджерам моего сайта управлять некоторыми (но не всеми) блоками (например, редактировать текст и заголовок блока) без необходимости доступа к странице администрирования блока".

Используя модуль Bean, вы можете прекрасно позвольте вашим контент-менеджерам "" управляйте некоторыми (но не всеми) блоками (например, редактируйте текст и заголовок блока) без необходимости доступа к странице администрирования блока"". Вот цитата о модуле Bean (со страницы проекта):

Подумайте о компоненте как о методе предоставления новых типов (по сравнению с узлом это будет тип контента), который затем предоставляет интерфейс добавления контента для создания стольких блоков, сколько вам требуется. Затем содержимое бобов может быть помещено вокруг сайта, как и в любом другом блоке.

В сочетании с опциями, доступными для предоставления соответствующих разрешений на бобы, это должно дать вам большую гибкость в отношении того, как именно вы хотите использовать этот (отличный) модуль в вашем конкретном случае: для каждого Тип блока созданный с помощью модуля BEAN, вы можете использовать типичную страницу Разрешений admin/people/permissions) для предоставления Добавления/редактирования/просмотра/удаления доступа к выбранным ролям (Примечание: это 4 также разделенные разрешения). Поэтому, если вы создадите один такой "тип блока" для роли "контент-менеджеры", тогда все пользователи с этой ролью (и только они) смогут добавлять/Редактировать/Просматривать/Удалять такие блоки.

Возможный бонус: вам все еще нужен модуль Nodeblock?

Еще немного справочной информации о бобах:

  • Для определения типа блока вы используете пользовательский интерфейс администратора (через admin/structure/block-types), который аналогичен определению типов контента (через admin/structure/types).
  • Разница заключается в том, что вы не создаете узлы (выбранного "типа контента" и с помощью node/add), а вместо этого блоки (выбранного "типа блока" и с помощью block/add).

Этот модуль также отлично работает в сочетании с модулями UUID и Интеграции функций UUID. И после того, как вы познакомитесь с модулем Bean, вы можете найти на своем сайте другие случаи, когда вы также захотите использовать этот модуль (что каким-то образом компенсирует тот факт, что вам нужно добавить другой модуль).

Видеоурок Учебник по модулю Drupal Bean - использование пользовательского интерфейса администратора Bean предоставляет отличное введение, чтобы действительно понять возможности этого модуля и то, что вы можете с ним делать (используя только методы создания сайтов, без использования пользовательского кода). Он также показывает, как модуль Bean преобразует блоки Drupal в объекты, доступные для заполнения.

Замечание: интересная деталь на странице проекта Блок узлов:

... Существует несколько других модулей и подходов, которые позволяют представлять узлы в виде блока. Смотрите сравнение в http://groups.drupal.org/node/93499 ...

И эта последняя ссылка гласит следующее:

Модуль компонента не позволяет представлять узлы в виде блоков как таковые, но вместо этого создает блочные сущности. Поскольку сущности являются основной единицей контента Drupal 7, это аналогично и может выполнять многие из тех же функций заканчивается.

Это звучит как "Теперь, когда модуль BEAN доступен (его не было в то время, когда был задан этот вопрос), вам больше не нужно представлять блоки в виде узлов, чтобы выполнять более сложные действия с блоками"... нет?

PS: Модуль Bean запущен только с D7 (из-за "сущностей", конечно, которые были представлены только в D7), и уже зарегистрировано более 22 тыс. установок. И он был интегрирован (уже) в ядро в D8. Тем, кто еще не использует его, определенно следует начните смотреть на него, готовясь к тому, чтобы когда-нибудь перейти на D8.

 2
Author: Pierre.Vriens, 2015-12-22 17:50:05