Drupal 7 Webサイトで3つの役割を持つマルチユーザーWebサイトに取り組んでいます。さまざまなユーザーのカスタムフィールドにprofile2モジュールを使用しています。また、プロファイル/ユーザー登録のprofile2パスも使用しています。
すべてのユーザー/プロファイルロールから3つの異なる場所cck(場所cckとは異なるフィールドが許可されています)フィールドが必要なため、Locationモジュールで問題が発生しました。これで2か月以上行き詰まりました。 Profile2とLocation cckを使用できるのはいいことですが、Viewsモジュールが異なるプロファイルのProfile2 CCKフィールドに異なるLocationフィールドを抽出しないため、それは不可能です(たとえば、一部のビューの場所から電話または都市のフィールドのみが必要です)。
これ(これまでのところ)を達成する唯一の方法は、ユーザーアカウントフィールドに3つの場所のcckフィールドを作成し、フィールド許可モジュールを使用して特定のロールに特権を付与することです。
だが!特定のプロファイルからの他のすべてのフィールドを使用して、profile2登録パスのその場所フィールドを公開する必要があり、それらは必須である必要があります。
ユーザータイプ(購入者、販売者など)に基づいて登録フォームの場所のcckフィールドを非表示にする方法はありますか?
profile2パスを使用しているときにユーザー登録フォームのフィールドを非表示および表示するには-template.phpのhook_form_alterで以下を試してください。
if ($form_id == 'user_register_form') {
// get current path
$request_path = request_path();
// check if current path corresponds to your registration form for a particular role
if (strpos($request_path,'buyer') !== false) {
// removes the field that should be hidden
$form['field_1']['und'][0]['value']['#access'] = FALSE;
// or
unset($form['field_1']['und'][0]['value']);
// set the state of the field to required
$form['field_2']['und'][0]['value']['#required'] = TRUE;
}
}
単純な警告-ajaxを使用するロケーションモジュールフィールド(アドレスフィールドモジュールも同様)には、ユーザーregを壊すバグがあることがわかります。エラーで送信され、上記の方法で非表示のフィールドが公開された場合に、Profile2 Pathによって生成されたフォーム。この問題の洞察を探してください( https://www.drupal.org/node/2558335 )。