logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

UI を使用してカスタムフィールドのコードをエクスポートする

17/05/2020, by maria

カスタムモジュールからコンテンツタイプをエクスポートするとき、このコンテンツタイプに属するフィールドも追加したい場合があります。フィールドを自動的に作成できるため、余分なフィールドを残さず、追加し忘れないことを保証しながら、複数のサイトで削除および再インストールできます。これらのフィールドをコードベースに追加するには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

field_storage

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

field_5

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

entity_view_display

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

entity_form_display

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