私はDrupal 7を使用して、組織をボランティアにリンクするプロジェクトを作成しています。私の最初のアプローチは、プロファイルモジュールを使用して、役割(ボランティアと組織)ごとに異なるプロファイルを作成することです。選択したロールにのみアタッチされる新しいフィールドを作成することは可能ですか?
私はDrupal 7を使用して、組織をボランティアにリンクするプロジェクトを作成しています。私の最初のアプローチは、プロファイルモジュールを使用して、役割(ボランティアと組織)ごとに異なるプロファイルを作成することです。選択したロールにのみアタッチされる新しいフィールドを作成することは可能ですか?
回答:
これは、プロファイル2モジュールの優れた使用例です。
プロジェクトページにリストされているように:
Profile2では、複数のプロファイルタイプを作成できます。これは、権限を介してロールに割り当てることができます(例:一般プロファイル+顧客プロファイル)
すべてのフィールドをユーザーに直接追加してから、カスタムhook_field_access()実装を使用して、編集/表示用に表示されるタイミングを制御することもできると思います。
私はあなたが使用することができると思うhttps://drupal.org/project/user_role_field このモジュールを使用すると、役割の特定のフィールドを指定することができます。新しいフィールドを作成するときに、このフィールドを有効にする役割を指定します。
1つのエンティティですべてのフィールドを収集するのは良い考えのように思えます。次に、列挙子フィールドを作成し、エンティティサブタイプ(組織またはボランティア)を選択できます。これは、作成者が両方を作成する権限を持っている場合に必要です。ユーザーロールフィールドを使用して、作成者が表示できないフィールドを非表示にすることができます。フィールド権限を使用して、作成者と閲覧者がアクセスを許可されていないアクセスを制限できます。条件付きフィールドを使用して、他のフィールドの値に依存するフィールドを非表示または表示することもできます。この場合、依存先フィールドは列挙子フィールドになります。計算フィールドを使用して、サブタイプに応じてロジックを追加することができます。
列挙子に分類法を使用するのが好きですが、代わりにテキストリストにすることもできます。
また、サブタイプ固有のフィールドをdrupal.org/project/field_groupにグループ化することもできます。
このパターンは、コンテンツタイプにも適用できます。やってみようと思います。
Microsoft Sharepointでは、ContentTypesは何年もの間継承されてきました。それは将来のDrupalバージョンで来るのだろうか。