UI を使用してカスタムフィールドのコードをエクスポートする
カスタムモジュールからコンテンツタイプをエクスポートするとき、このコンテンツタイプに属するフィールドも追加したい場合があります。フィールドを自動的に作成できるため、余分なフィールドを残さず、追加し忘れないことを保証しながら、複数のサイトで削除および再インストールできます。これらのフィールドをコードベースに追加するには2つの方法があり、それらを確認します。
前提条件
- Drupal 8.0.x がインストールされていること。
- カスタムモジュールを持っていること(この例で使用されるモジュール名は foobar です)。
- モジュール内にカスタムコンテンツタイプを持っていること(親ページの手順に従ってください。コンテンツタイプ名は「自動車ブランド(Car Brand)」になります)。
コンテンツタイプへの追加フィールドの追加
このステップを実行するには2つの方法があります。UI を使用してフィールドを作成し、設定をファイルにエクスポートするか、ファイルを自分で直接書くことができます。私は最初のオプションを使用するのが好きです。必要になるものを何も見逃していないことを確認できるからです。ただし、フィールドはカスタムコンテンツタイプと関連付けるために「foobar_car_brand_」ではなく「field_」で始まる名前でエクスポートされます。このページでは、UI を使用してフィールドを作成し、カスタムモジュールで使用するコードをエクスポートする方法を説明します。
フィールド作成のための UI の使用
前述のように、Drupal がコンテンツタイプにフィールドを追加するための要件にあまり詳しくないユーザーには、この方法が少し適しています。
カスタムコンテンツタイプの有効化
最後の親ページで foobar モジュールをまだ有効にしていない場合は、今すぐ有効にしてください。「コンテンツの追加」ページに移動すると、「Car Brand」コンテンツタイプの新しいノードを作成できることがわかります。
/admin/structure/types/manage/car_brand/fields
モジュールを有効にしたら、コンテンツタイプのフィールド管理セクションに移動できます。必要なフィールドをすべて追加します。追加するフィールドの1つが、フィールドタイプ「テキスト(フォーマット済み、長い、サマリー付き)」の「Brand Information」(field_brand_information)であり、「テキスト」フィールドを削除することを確認してください。他のすべてはデフォルトのままにします。
UI を使用したフィールド設定のエクスポート /admin/config/development/configuration/single/export
フィールドを追加したら、設定同期ページに移動します。上部に3つのタブがあります。その3つから「エクスポート」を選択します。次に、それらのタブの下にある「単一項目」を選択します。
エクスポート設定の取得
以下に、フィールド「field_brand_information」に対してエクスポートする必要がある項目を示す4つの画像が添付されています。
- フィールドストレージ(Field Storage)
- フィールド(Field)
- エンティティ表示(Entity View Display)
- エンティティフォーム表示(Entity Form Display)
設定コードブロックの下に、カスタムモジュールに作成する必要があるファイル名が表示されます。「uuid:」で始まる最初の行を除いて、設定コード内のすべてを指定されたファイルにコピーします。
注: 追加のフィールドを追加した場合は、それぞれについてフィールドとフィールドストレージをエクスポートする必要があります。ティーザーなどの複数の表示を作成した場合も同じです。この例では、デフォルトの表示のみを示しています。
modules/custom/foobar/config/install/field.storage.node.field_brand_information.yml

modules/custom/foobar/config/install/field.field.node.car_brand.field_brand_information.yml

modules/custom/foobar/config/install/core.entity_view_display.node.car_brand.default.yml

modules/custom/foobar/config/install/core.entity_form_display.node.car_brand.default.yml

foobar モジュールのアンインストールと再有効化
すべてのフィールド設定がコードベースに揃ったので、foobar モジュールをアンインストールします。モジュールをアンインストールした後、モジュールを再び有効に戻して、カスタムフィールドが追加されるかどうかを確認します。「コンテンツの追加」ページに移動すると、「Car Brand」コンテンツタイプの新しいノードを作成でき、「Brand Information」という名前の新しいフィールドと、作成したその他のフィールドが含まれていることがわかります。