Как ограничить управление блоками по ролям?
На сайте Drupal 7 я хочу предоставить пользователям с определенной ролью разрешение на управление некоторыми (но не всеми) блоками. Более конкретно, я хочу разрешить редактирование только блоков, предоставляемых модулем Nodeblock.
Я, вероятно, могу многое сделать с помощью hook_form_alter, но, возможно, есть более чистый способ (или даже модуль) указать разрешения на редактирование на уровне блока.
2 answers
Взгляните на Заблокировать доступ.
Со страницы проекта:
Этот модуль добавляет набор глобальных разрешений для создания, просмотра, перемещения, включения, отключения и настройки блоков, а также разрешений на уровне отдельных блоков.
Часть вашего вопроса - "... только хочу разрешить редактирование блоков, предоставляемых модулем 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.