Ограничение записей в списке полей на основе роли пользователя в Drupal 7 - PullRequest
2 голосов
/ 04 ноября 2011

В Drupal 7 есть способ ограничить содержимое списка полей в зависимости от роли пользователя?

Например:

для роли пользователя 1, я хочу, чтобы список пользовательских полей показывал:

Яблоко Банан, Виноград, Апельсин

для роли пользователя 2, я хочу показать список настраиваемых полей:

Яблочный виноград

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

Ответы [ 2 ]

2 голосов
/ 09 августа 2012

Вы можете реализовать hook_field_widget_form_alter() в своем собственном модуле и удалить определенные опции, основываясь на любых критериях, которые вы хотите. Например:

function MYMODULE_field_widget_form_alter(&$element, &$form_state, $context) {
  if ($context['field_name'] == 'field_MY_FIELD') {
    // Users without the "administer nodes" permission should not see the
    // "Banana" and "Orange" options.
    if (!user_access('administer nodes')) {
      unset($element['#options']['banana'], $element['#options']['orange']);
    }
  }
}

См. http://api.drupal.org/api/drupal/modules!field!field.api.php/function/hook_field_widget_form_alter/7 для получения дополнительной информации о hook_field_widget_form_alter().

0 голосов
/ 11 июня 2013

Мы можем сделать это без какого-либо специального модуля просто, используя ссылочный вид, как упомянуто alex. Требуется «выбрать текущего пользователя в качестве фильтра».

Подготовьте тип контента user_category, в котором вы сохраните имя пользователя в категории, например,

пользователь: 1 - категория: - яблоко, виноград, банан
пользователь 2 - категория: яблоко, виноград и т. д.

Создайте представление типа ссылки и фильтрацию как текущий пользователь, и все готово.

Использовать тип поля в качестве ссылки в содержимом, выбрать вид в полях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...