ユーザープロファイルでカスタムユーザーフィールドを非表示にする方法


20

Drupal 7では、非管理ユーザーがカスタムユーザープロファイルフィールドを変更できないようにする最良の方法は何ですか?

ユースケース:ユーザー(実際の顧客)が変更しないようにする「顧客ID」というユーザーフィールドを作成しました。このフィールドは、自分の参照用および他のモジュールでのプログラムによる使用のために存在します。ユーザーにカスタマーIDが表示されても構いませんが、編集することはできません。

ユーザープロファイルページのページテンプレートをオーバーライドする必要がありますか?ある場合、フィールドを読み取り専用または非表示にするためにテンプレートをどのように変更しますか?

手伝ってくれてありがとうございます!

クリス

回答:


17

私が思うにフィールド権限はあなたが探しているものです。モジュールのプロジェクトページからの引用です:

...サイト管理者は、フィールドレベルの権限を設定して、任意のエンティティのフィールドを編集、表示、作成できます。

特徴

  • ノードだけでなく、任意のエンティティでフィールド権限を有効にします。
  • ユーザーのアクセス権に基づいてパターン化されたさまざまな表示を許可するロールベースのフィールド権限。
  • 作成者レベルの権限では、エンティティの所有者に基づいてフィールドを表示および編集できます。
  • 各フィールドの権限はデフォルトでは有効になっていません。代わりに、管理者は、この機能が必要なフィールドに対してこれらの権限を明示的に有効にできます。
  • フィールド権限の概要

ありがとう、ありがとう!Field Permissionsモジュールをインストールしました(アルファ版は最新で、少し緊張しますが、何でも)。ユーザーがプロファイルを表示すると、ユーザーからフィールドが非表示になります。モジュールのすべての設定を試した後、フィールドを表示可能にする方法はないようですが、読み取り専用です。絶対的な要件ではありませんが、持っておくといいでしょう。
ctlarsen

フィールドを表示可能に設定すると、テキストフィールドがプレーンテキストとして表示されます。テキストフィールドを保持して読み取り専用に設定する場合、フォームでhook_form_alterを使用する必要があると思います。
-pasine

改めてありがとうございます。hook_form_alterルートを取り、それが私をどこに連れて行くかを見ていきます。行くのに最適な方法のようです。
ctlarsen

このモジュールField PermissionsはDrupal 8で正常に動作しますが、私が考えるカスタムフィールドのみを非表示にできます(ユーザー名もハイドする必要があります)
セバスチャンギケル

5

ユーザープロファイルフォームからフィールドを非表示にするには、を使用してフィールドの#accessプロパティをFALSEに設定しますhook_form_FORMID_alter

次のスニペットは、field_organisation非管理者のユーザープロファイルフォームからフィールドを非表示にします。

function YOURCUSTOMMODULE_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    $form['field_organisation']['#access'] = FALSE;
  }
}

drupalanswersの同様の質問もご覧ください

template_preprocess_user_profileを使用して、ユーザープロファイルページ(フォームではなく)からフィールドを非表示にすることもできます。

次のスニペットは、field_organisation非管理者のユーザーページからフィールドを非表示にします。

function YOURCUSTOMMODULE_preprocess_user_profile(&$vars) {
  $current_user = user_uid_optional_load();
  if($current_user->uid != 1) {
    unset($vars['user_profile']['field_organisation']);
  }
}

1

http://drupal.org/project/user_readonlyというモジュールがあるようです 。このモジュールにより、管理者はユーザーアカウント/プロファイルフィールドの変更を防ぐことができます。管理者は、許可しないフィールドまたは許可するフィールドを選択できます。許可された。」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.