我有一个Drupal 7站点,我想根据配置文件用户(而不是登录用户)的角色在配置文件页面中打印出一些字段内容。只有当配置文件所有者没有角色 author:
时,我才需要显示特定字段。<?php
if (!in_array('autor', array_values($user->roles))) {
print drupal_render(field_view_field('profile2', $profile['main'], 'field_nombrecompleto1', 'value'));
}
else {print "yada yada";}
注意:问题中的概要文件字段是一个rofile2字段,而不是一个核心概要文件字段。
这段代码有什么问题?因为在任何情况下它都会打印出有问题的字段,而不管概要文件所有者的角色。
我试过这段代码,在这种情况下,这个字段在任何情况下都不会打印出来:
<?php
if (is_array($user->roles) &&
in_array('authenticated user', $user->roles) &&
!in_array('autor', $user->roles)) {
print drupal_render(field_view_field('profile2', $profile['main'], 'field_nombrecompleto1', 'value'));
}
?>
在Drupal 7中修改表单以编辑您的配置文件时,这是如何实现的:
function MYMODULE_form_profile2_edit_main_form_alter(&$form, $form_state) {
global $user;
$roles = $user->roles;
if(!in_array('authenticated user', $roles)) {
$form['profile_main']['MY_FIELD_ID']['#access'] = FALSE;
}
}