Field Inheritance
計算フィールドと設定可能な継承戦略を使用して、あるエンティティから別のエンティティへフィールドデータを継承する機能を提供します。
field_inheritance
インストール
composer require 'drupal/field_inheritance:^3.0'
composer require 'drupal/field_inheritance:^2.0'
概要
Field Inheritanceは、サイト管理者が任意のエンティティから任意の他のエンティティへ、あらゆるフィールドを継承できるようにする強力なモジュールです。エンティティ全体を参照するのではなく、ソースエンティティから宛先エンティティへ特定のフィールド値を取り込むことができる、フィールドレベルのエンティティ参照の代替手段と考えることができます。
このモジュールは、宛先エンティティ上に計算フィールドを作成し、ソースエンティティからデータを動的に取得して表示します。このアプローチは、データを複製したり複雑なエンティティ関係を作成したりせずに、異なるコンテンツタイプ間で共通データを共有する必要があるシナリオで特に有用です。
このモジュールは4つの継承戦略をサポートしています:Inherit(ソースからフィールドデータを直接取得)、Prepend(宛先データをソースデータの上に配置)、Append(宛先データをソースデータの下に配置)、Fallback(宛先データが設定されていれば表示し、そうでなければソースデータを表示)。開発者が特定のフィールドタイプに対して継承機能を拡張できるプラグインシステムを提供します。
Features
- ソースエンティティから宛先エンティティへデータを動的に継承する計算フィールドを作成
- さまざまなユースケースに対応する4つの柔軟な継承戦略:Inherit、Prepend、Append、Fallback
- Node、Taxonomy Term、User、Block Content、カスタムエンティティを含むすべてのフィールド対応エンティティタイプをサポート
- 異なるフィールドタイプを処理するためのプラグインベースのアーキテクチャ(任意のフィールドタイプ用のDefaultプラグイン、Entity Reference、Image、File、Paragraphs、Webform用のEntity Referenceプラグイン)
- 各継承フィールドにデータを提供するソースエンティティを指定するためのエンティティレベルおよびフィールドレベルのマッピング制御
- Viewsで継承フィールドデータを表示するためのViews統合
- 継承フィールド値をTokenで使用するためのToken統合
- 継承ルールのインポート/エクスポートを可能にするConfiguration Entityシステム
- コンテンツエディターがコンテンツアイテムごとに継承を有効/無効化し、ソースエンティティを選択するためのWidget
- 継承データの言語フォールバック付き翻訳可能コンテンツのサポート
- エンティティごとの継承設定を保存するために有効化されたエンティティタイプに追加されるBase Field
Use Cases
親コンテンツからのTaxonomy Termの継承
ウェブサイトにTaxonomy Termフィールドを持つ「カテゴリ」Nodeがあります。子の「記事」Nodeは、親カテゴリからカテゴリTermを継承でき、手動で選択することなく記事がカテゴリと同じTermで自動的にタグ付けされます。
関連コンテンツ間でのヘッダー画像の共有
「キャンペーン」コンテンツタイプにはヒーロー画像フィールドがあります。関連する「イベント」Nodeはこのヒーロー画像を継承でき、キャンペーン素材全体で視覚的な一貫性を提供します。「fallback」戦略を使用することで、必要に応じて個々のイベントでカスタム画像で上書きできます。
著者情報のカスケード
「シリーズ」コンテンツタイプには詳細な著者情報があります。個々の「エピソード」Nodeは「inherit」戦略を使用してシリーズから著者フィールドを継承でき、一貫した著者帰属を維持しながらデータの重複を排除します。
複数ソースからの本文コンテンツの結合
「prepend」または「append」戦略を使用して、テンプレートエンティティからの本文コンテンツとコンテンツ固有のテキストを結合します。たとえば、「テンプレート」Nodeからの免責事項をすべての「法的文書」Nodeに自動的に追加できます。
ベース商品データを継承する商品バリエーション
Eコマースサイトに共通の説明を持つ「商品」Nodeがあります。商品「バリエーション」Nodeは「prepend」または「append」戦略を使用してベースの説明を継承しながら、バリエーション固有の詳細を追加します。
Tips
- すべての継承フィールドが同じソースエンティティから来るシンプルな設定にはEntity Mappingsを使用し、異なるフィールドに異なるソースエンティティが必要な場合はField Mappingsを使用してください
- 「fallback」戦略は、個々のエンティティで上書きできるデフォルト値を提供するのに特に有用です
- 継承フィールドはViewsで表示でき、継承データを含むリストを構築できます
- Entity Referenceフィールド(Image、File、Paragraphsを含む)の継承ルールを作成する場合、モジュールは適切な処理のためにEntity Reference Field Inheritanceプラグインを自動的に選択します
- field_inheritance Base Fieldはリビジョン可能であり、宛先エンティティタイプがリビジョンをサポートしている場合、継承設定はリビジョンごとに追跡されます
- 環境間でデプロイするために、コンフィグエクスポートを使用してフィールド継承設定をエクスポートしてください
Technical Details
Admin Pages 7
/admin/structure/field_inheritance
Field Inheritanceモジュールのメイン管理ページ。設定済みのフィールド継承リストとモジュール設定へのアクセスを提供します。
/admin/structure/field_inheritance/settings
フィールド継承を使用できるエンティティタイプを含む、Field Inheritanceモジュールのグローバル設定を構成します。
/admin/structure/field_inheritance/settings/confirm
フィールド継承からエンティティタイプを削除する際に表示される確認ページ。削除されるエンティティタイプのすべてのField Inheritanceデータが失われることを警告します。
/admin/structure/field_inheritance/list
設定済みのすべてのフィールド継承ルールを一覧表示し、ラベル、マシン名、タイプ(継承戦略)、ソースエンティティ/バンドル、ソースフィールド、宛先エンティティ/バンドル、宛先フィールドを表示します。
/admin/structure/field_inheritance/add
ソースエンティティから宛先エンティティへフィールドデータがどのように継承されるかを定義する、新しいフィールド継承ルールを作成するフォーム。
/admin/structure/field_inheritance/{field_inheritance}/edit
既存のフィールド継承ルールを編集するフォーム。マシン名以外のすべてのフィールドを変更できます。
/admin/structure/field_inheritance/{field_inheritance}/delete
フィールド継承ルールを削除するための確認ページ。計算フィールドは宛先バンドルから削除されます。
権限 1
Hooks 3
hook_field_inheritance_inheritance_class_alter
継承されたBase Fieldを構築するために使用される継承クラスを変更できます。特定の継承プラグインにカスタムファクトリクラスを提供するために使用します。
hook_field_inheritance_compute_value_alter
継承フィールドの計算値を変更できます。継承データが返される前に変更するために使用します。
hook_field_inheritance_info_alter
発見されたフィールド継承プラグイン定義を変更できます。
Troubleshooting 5
エンティティフォーム表示でField Inheritance Widgetが有効になっていること、および「このエンティティの継承を有効にする」チェックボックスがオンになっていることを確認してください。また、Field MappingsまたはEntity Mappingsセクションでソースエンティティが選択されていることを確認してください。
prepend、append、またはfallback戦略を使用する場合、ソースと宛先のフィールドは同じタイプである必要があります。互換性のあるフィールドを選択していることを確認してください。
以下を確認してください:1)宛先バンドルに「field_inheritance」フィールドが設定されている、2)エンティティで継承が有効になっている、3)有効なソースエンティティが選択されている、4)ソースエンティティのソースフィールドにデータがある。
設定ページにはフィールド対応エンティティタイプのみが表示されます。カスタムエンティティタイプはFieldableEntityInterfaceを実装する必要があります。
継承フィールドはレンダリング時に計算されます。継承設定の変更が反映されない場合はキャッシュをクリアしてください。ソースエンティティデータへの変更は、キャッシュをクリアしなくてもすぐに反映されるはずです。
Security Notes 3
- 「administer field inheritance」権限は制限付きアクセスとしてマークされています - 信頼できる管理者にのみ付与してください
- フィールド継承はエンティティアクセスを尊重します - ユーザーは閲覧アクセス権があるエンティティからのみ継承できます
- 機密性の高いフィールドデータを継承する場合、ソースエンティティと宛先エンティティの両方に適切な閲覧権限が設定されていることを確認してください