Вопрос

Как вы можете позволить редактору редактировать текст в блоке, но не внести другие изменения конфигурации, как перемещение блока из одного региона в другой?

Это было полезно?

Решение 3

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

Создайте блок и поместите следующий код в корпус блока:

<?php
$node = node_load(77);//77 is the nid of the node I want to put in the block.
$node_content = node_view($node,"full");
print render($node_content);
?>

Или вы можете создать блок просмотра и фильтровать на идентификаторе узла.

Теперь вы даете кому -то разрешение отредактировать тип контента, но не разрешение на создание или удаление его.

Другие советы

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

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

Например, следующий код изменит сборку формы с block_admin_configure (), функция, которая создает форму конфигурации для любого блока, чтобы разрешить пользователям с разрешением «редактировать заголовки блоков» для редактирования заголовка блока.

function mymodule_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  if (isset($form['settings']['title'])) {
    $form['settings']['title']['#access'] = user_access('edit block titles');
  }
}

Функцией является реализация Hook_form_form_id_alter () Сделано для модуля под названием mymodule.module.

Поля для настройки региона (области темы - блок вывод) содержатся в $form['regions']; Набор поля содержит поле выбора для каждого включенного их.
Чтобы показать поле, установленное только пользователям с разрешением «Редактировать регионы», вы можете использовать следующий код.

function mymodule_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  if (isset($form['regions'])) {
    $form['regions']['#access'] = user_access('edit block regions');
  }
}

Пользователи, имеющие разрешение на администрирование блоков, могут изменить область, назначенную блокам от http://example.com/admin/structure/block. Анкет Чтобы не разрешать пользователю без разрешения «Редактировать регионы» регионов »на доступ к этой странице, вы должны изменить обработчик доступа в этот меню и заменить обработчик доступа по умолчанию на пользовательский, который будет возвращать FALSE Когда пользователи не имеют такого разрешения.
Для получения дополнительной информации см. Hook_menu а также Hook_menu_alter ().

Увидеть Блок доступа модуль.

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

Одно простое решение, которое я бы порекомендовал, - это проверить Коробки модуль. Этот модуль предоставит приятные варианты редактирования встроенного редактирования (через AJAX) для блоков, что позволит редакторам очень легко изменить текст в блоках. Разрешения по -прежнему должны быть «административными блоками» для редакторов, но, поскольку теперь они смогут редактировать встроенные блоки, им действительно нет необходимости когда -либо попасть на страницу конфигурации блока.
Теперь, если вы все еще настаиваете на удалении доступа к этой странице конфигурации блока, вы можете просто сделать простое изменение меню, которое изменяет разрешение, необходимое для страницы конфигурации блока, например, следующий код.

function hook_menu_alter(&$items) {
  //Example Use Case, switching permission from "administer block" to "administer site configuration"
  $items['admin/structure/block']['access arguments'] = array('administer site configuration');
}

А Фасоль Модуль является возможной альтернативой, чтобы ответить на этот вопрос. Вот цитата о его странице проекта:

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

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

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

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

Этот модуль начинался только с D7 (из -за «сущностей», конечно, которые были представлены только в D7), и уже зарегистрировано более 22 тыс. Установки. Те, кто еще не использует его, должны определенно начать смотреть на это при подготовке к обновлению дня до D8. Потому что это то, что в настоящее время показано на его странице проекта (я добавил жирную разметку здесь):

Этот модуль был включен в Drupal 8 Core. Анкет См. Это проблема Чтобы получить больше информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top