只有当配置文件所有者不属于角色X时才显示内容(在Drupal 7中)


Show stuff only if profile owner does not belong to role X (in Drupal 7)

我有一个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;
  }
}