基于Drupal 7中的用户角色限制字段列表条目

时间:2011-11-04 13:14:52

标签: drupal

在Drupal 7中有没有办法根据用户角色限制字段列表的内容?

例如:

对于用户角色1,我希望自定义字段列表显示:

Apple Banana Grape Orange

对于用户角色2,我希望自定义字段列表显示:

Apple Grape

“字段权限”模块允许您限制基于角色显示和编辑列表的访问权限,但我正在寻找更精细的内容来限制基于角色访问列表中的项目。

2 个答案:

答案 0 :(得分:2)

您可以在自己的模块中实施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']);
    }
  }
}

有关hook_field_widget_form_alter()的详细信息,请参阅http://api.drupal.org/api/drupal/modules!field!field.api.php/function/hook_field_widget_form_alter/7

答案 1 :(得分:0)

我们可以在没有任何自定义模块的情况下通过使用alex提到的参考视图来完成。 所需要的是“选择当前用户作为过滤器”。

准备一个内容类型user_category,在其中根据类别保存用户名, 例如

  

用户:1 - 类别: - 苹果,葡萄,香蕉
  用户2 - 类别:苹果,葡萄等

形成类型引用的视图并以当前用户身份过滤,您就完成了。

在内容中使用字段类型作为参考,在字段选项中选择视图。