1

Drupal 7 サイトがあり、プロファイル ユーザー (ログイン ユーザーではない) の役割に応じて、プロファイル ページ内にいくつかのフィールド コンテンツを出力したいと考えています。プロファイル所有者がロールautorを持っていない場合にのみ、特定のフィールドを表示する必要があります。

<?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 に答える