field_collection
を使用したくないことを強調します。
さまざまなエンティティやバンドルで再利用できるカスタムフィールドタイプを作成したい。これは1つのカスタムモジュールに保持する必要があります。したがって、それを有効にして、任意のエンティティタイプの[フィールドの管理]ページに移動すると、カスタムフィールドタイプ(例:foo
)を取得できるはずです。このフィールドは、基本画像フィールドおよび単純な1行のテキストフィールドと組み合わせる必要があります。私の知る限りフィールドを再作成できないため、field_collection
モジュールを使用したくありません。機能を使用しても、field_base
セクションでフィールドをエクスポートできます。 drupalインスタンスをクリーンアップしてこの機能を再度有効にするためにフラッシュした後、[構造>コンテンツタイプ> CONTENT_TYPE>フィールドの管理]ページの[既存のフィールドの追加]ページに表示されません。たぶん私は何か悪いことをしている(?)
では、既存の基本フィールドを使用してプログラムでカスタムフィールドタイプを作成するにはどうすればよいですか?例えばカスタムfoo
フィールドタイプと画像フィールドおよびテキストフィールド?
または(機能に問題がある場合)
機能を使用して、サブフィールドを含むカスタムフィールドコレクションをフィールド定義(コンテンツタイプ/エンティティにアタッチされていない)としてのみエクスポートするにはどうすればよいですか?
あなたがしたいことは、複数のプロパティを持つフィールドタイプを作成することです。プロパティはフィールドテーブルの列を1つだけ必要とし、フィールドコレクションはデータベースの完全な新しいエンティティであるため、これは実際にはフィールドコレクションよりも効率的です。
これは、カスタムモジュールでカスタムフィールドタイプをゼロから構築する方法のドキュメントです。
https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-type
プロパティを既存のフィールドタイプに追加するため、このチュートリアルを使用します
https://www.lullabot.com/articles/extending-a-field-type-in-drupal-8
新しいフィールドタイプのクラスImageItem
を拡張します。また、表示するためにImageFormatter
を拡張し、新しいプロパティにフォームフィールドを提供するためにImageWidget
を拡張する必要があります。