在Drupal 7中有没有办法根据用户角色限制字段列表的内容?
例如:
对于用户角色1,我希望自定义字段列表显示:
Apple Banana Grape Orange
对于用户角色2,我希望自定义字段列表显示:
Apple Grape
“字段权限”模块允许您限制基于角色显示和编辑列表的访问权限,但我正在寻找更精细的内容来限制基于角色访问列表中的项目。
答案 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 - 类别:苹果,葡萄等
形成类型引用的视图并以当前用户身份过滤,您就完成了。
在内容中使用字段类型作为参考,在字段选项中选择视图。