1

我有一个 Drupal 7 站点,我想根据配置文件用户(不是登录用户)的角色在配置文件页面内打印出一些字段内容。仅当个人资料所有者没有角色作者时,我才需要显示特定字段:

<?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'));
}
?>
4

1 回答 1

1

这是在 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;
  }
}
于 2013-01-21T21:44:17.247 回答