Drupal 9 Layout Builder をマスターする: Web サイトのデザインを簡単にカスタマイズするための総合ガイド

公開: 2023-03-14

ページ構築に関しては、サイト ビルダー、コンテンツ作成者、およびコンテンツ編集者は、スムーズでユーザー フレンドリーなエクスペリエンスを常に求めています。 ページを設計および構築する場合、ドラッグ アンド ドロップおよび CKEditor テクノロジを使用することを期待しています。 この同一のエクスペリエンスは、Drupal コアの Drupal Layout Builder の単純なページ構成機能によって提供されます。

特徴的な Drupal Layout Builder は、コンテンツ作成者がコンテンツの表示方法を変更できる強力なビジュアル デザイン ツールを提供します。 最新バージョンで Drupal コアに追加された Layout Builder である Drupal 9 では、セクションを追加/削除して、さまざまなレイアウトを使用してコンテンツを表示し、必要に応じてページをカスタマイズできます。 Drupal 9 の Layout Builder モジュールを使用すると、これらのセクションを組み合わせて完全に独自のページを作成できます。

Drupal 9 Layout Builder を使用するには、レイアウト デフォルト (コンテンツ タイプのすべてのコンテンツのレイアウトを設計する) とレイアウト オーバーライド (特定のコンテンツ アイテムのレイアウトを設計する) の 2 つの異なる方法があります。 このブログの助けを借りて、Drupal 9 Layout Builder モジュールについてさらに学び、使い始めることができます。

このシリーズの次の記事では、レイアウト ビルダーと Ctools モジュールを使用してビュー モード パターンを適用する方法について詳しく説明します。

Drupal 9 レイアウトビルダー

レイアウトビルダーの紹介

Drupal 9 Layout Builder モジュールを使用して、コンテンツ タイプ、分類法、ユーザーなどのエンティティの外観を変更できます。 サイト ビルダーは、この機能を使用して、ブロック、フィールド、およびその他の要素を簡単にドラッグ アンド ドロップできます。

Drupal 9 のレイアウト ビルダー モジュールは、レイアウトを設計するときに行った変更のプレビューを提供することで、レイアウト構築プロセスを容易にします。 Drupal 9 のレイアウト ビルダーを使用すると、ユーザーがレイアウトに加えた小さな変更をすべて保存してフロント エンドで調べる必要がなく、スムーズなレイアウト作成エクスペリエンスのために行われた変更のプレビューが可能になります。

レイアウト ビルダーには 2 つのモジュールがあります。

Layout Discovery - モジュールまたはテーマにレイアウトを登録する手段を提供します。

Layout Builder - ユーザーがコンテンツにブロックとコンテンツ フィールドを直接追加して整理できるようにします。

レイアウトを設計するとき、Layout Builder は 2 つの重要なアイデアを使用します。

セクション- ブロックを配置できる列またはコンテナ。 たとえば、2 列のレイアウトや 3 列のレイアウトなどです。

ブロック- セクションに配置できるコンテンツ要素。

Layout Builder モジュールのインストールと構成

Drupal 9 レイアウト ビルダー モジュールをインストールして構成するには、Layout Builder および Layout Discovery モジュールの拡張とアクティブ化に移動します。

新しいモジュールを追加

コンテンツ タイプと分類法を変更する

モジュールがインストールされたら、[構造]、[コンテンツ タイプ] に移動し、コンテンツ タイプの [表示の管理] を選択します。 この例では、「記事」コンテンツ タイプを使用します。

ディスプレイの管理

下部にある [レイアウト オプション] ドロップダウン メニューをクリックして [レイアウト ビルダーを使用] を選択し、[保存] をクリックします。

レイアウト オプション

フィールド フォーマッタは、ビュー モードで Layout Builder がアクティブ化された後、[レイアウトの管理] オプションに置き換えられます。 使用可能な各表示モードは、Layout Builder で使用できます。

ディスプレイの管理

[レイアウトの管理] をクリックすると、記事のコンテンツ タイプのレイアウトに移動します。

記事内容項目

セクションをレイアウトに挿入する

レイアウト ビルダーにさらにセクションを追加する前に、既定のセクションを削除します。 [閉じる] ボタンを選択します (下のスクリーンショットを参照)。 また、デフォルト セクションを削除するボタンが画面の右側に表示されます。 次に、「削除」を選択します。

構成セクション

「セクションの追加」オプションを選択して、レイアウトにいくつかのセクションを追加しましょう。 画面の右側には、セクションのレイアウトを選択できるオプションも表示されます。 ここでは、「2 列セクション」を選びましょう。

二列

「2 列レイアウト」の幅を選択するオプションが表示されます。ここでは、「67%/33%」を選択しましょう。次に、「セクションの追加」を選択します。

セクション構成

追加後、各セクション領域には「ブロックの追加」リンクが表示されます。

ブロックを追加

ブロックをセクション領域に挿入する

レイアウト用に選択した後、ブロックをエリアに追加できます。 「ブロックを追加」をクリックするだけで、ブロックを追加するときに「ブロックを選択」オプションが右側からスライドします。

ブロックを選択

ブロックの選択

右側の列のブロックをクリックするだけで選択できます。 「ブロック名でフィルター」テキスト フィールドを使用すると、名前に基づいて検索をフィルター処理してブロックを見つけることもできます。
ここでは、「本文」コンテンツ フィールドを選択します。

カスタム ブロックを作成する

フィールド フォーマッタを使用すると、追加するブロックをクリックして変更を加えることができます。 フォーマッタを設定したら、「ブロックを追加」をクリックします。

ブロックの詳細を追加

ブロックの左側には、「本文」コンテンツ領域があります。

本文内容

「本文」フィールドが追加されました。 変更を保存します。 Drupal 9 レイアウト ページの上部にあるメニューから [レイアウトを保存] を選択すると、セクションに加えたすべての変更を保存できます。

コンテンツのプレビュー

レイアウト ビルダーをさらにパーソナライズするために、さらにいくつかのフィールドをデザインに追加してみましょう。

フィールド構成

このレイアウトを保存した後、記事コンテンツ タイプのページにアクセスすると、作成したばかりのレイアウトのプレビューが表示されます。

レイアウトのオーバーライド:

作成したばかりのレイアウトは、すべての記事で機能します。 Drupal には、特定の記事のカスタム レイアウトを作成するために有効にする必要がある設定がいくつかあります。 これを行うには、 [各コンテンツ アイテムのレイアウトをカスタマイズできるようにする]を選択します。

レイアウト オプション

このオプションを有効にした後に記事にアクセスすると、[レイアウト] タブのボタンが表示されます。

レイアウトボタン

同じインターフェースで、レイアウトを変更できるようになりました。 ただし、これはこの 1 つのコンテンツのデザインを変更するだけです。

次に、このページにブロックを追加しましょう。 新しい 1 列のセクションを作成し、[ブロックの追加] ボタンをクリックします。 このページで他のユーザーから最近編集されたコンテンツを表示したい場合を考えてみましょう。新しいブロックを追加するときに「最近のコンテンツ」ブロックを除外し、レイアウトを保存する前に必要に応じてカスタマイズします。

最近の記事

最終的に、最新の記事ブロックを含めると、ページは次のようになります。

最近の記事のプレビュー

重要: 1 つのエンティティのレイアウトを変更した場合、レイアウト ビルダーを無効にすることはできません。

変更したすべてのレイアウトを元の設定にリセットした後でのみ、レイアウト オプションを更新できます。

レイアウトオプション

コードからのレイアウトビルダー

GUI 管理に関して言えば、Drupal Layout Builder は間違いなく素晴らしいものです。 ただし、ツールを定期的に使用しているときに対処するプログラミングの問題は、もう少し難しい場合があります。 ここで、コードを使用して Layout Builder を使用する方法を尋ねるかもしれません。

1 つのエンティティのテンプレートを有効または無効にするのはかなり簡単であることがわかりました。

次のコードを使用してディスプレイをロードするだけです。

 $entityViewDisplay = \Drupal::entityTypeManager- >getStorage('entity_view_display')- >load('ENTITY_TYPE.ENTITY_BUNDLE.VIEW_MODE');

次に、タイプLayoutBuilderEntityViewDisplayのオブジェクトを返します。これを次のように変更する必要があります。

 $entityViewDisplay->enableLayoutBuilder();

フラグを追加で設定したり、特定のビュー モードのレイアウト ビルダーを有効にしたい場合:

 $entityViewDisplay->setOverridable(TRUE);

単一のエンティティに固有のレイアウトを作成できるようにします。

その後、すべてを保存する必要があります。

 $entityViewDisplay->save();

バックグラウンドで実際に行われるのは、レイアウト ビルダー モジュールが特定のエンティティ タイプのthird_party_settingslayout_builder_keyを追加し、上記のパラメーターの値(有効、カスタムを許可)を追加し、このタイプのエンティティのデフォルト レイアウトを以下に保存することです。セクション。

setOverridableオプションがTRUEに設定されている場合、 layout_builder__layoutという名前の新しいエンティティ フィールドが作成され、この特定のエンティティの更新されたレイアウトを保持するために使用されます。

逆に、コードを使用してセクションを作成し、関連するコンテンツを入力するには、もう少し手間がかかります。

まず、新しいセクションを追加しましょう。 これを実現するには、 \Drupal\layout_builder\Sectionクラスの新しいインスタンスを作成するときに、レイアウト識別子として機能するlayout_idパラメーターを含める必要があります。

ヒント:レイアウト検出モジュールには、デフォルトのテンプレートが含まれています。 レイアウトは*.layouts.ymlファイルで定義されます。 より詳細な情報については、drupal でカスタム レイアウトを作成する方法に関する次の記事を参照してください。

次に、新しい要素をセクションに直接追加するのが最も簡単な方法です。 これを行うには、 \Drupal\layout_builder\SectionComponentクラスのインスタンスを引数として受け入れるappendComponentメソッドを使用します。 それでも、このようなセクション コンポーネントを開発する前に、まずいくつかのことを調整する必要があります。 開始するには、次のものが必要です。

  • 埋め込まれた要素の uuid、
  • セクション内の地域の名前、
  • プラグイン構成。

このチュートリアルでは、 Entity Blocks が提供するプラグインを使用して、単一列セクションにサンプル ノードを埋め込みます

 $section = new Section('layout_onecol'); $uuid = $node->uuid(); $region = 'content'; $pluginConfiguration = [ 'id' => 'entity_block:node', 'provider' => 'entity_block', 'label_display' => FALSE, 'view_mode' => 'default', 'entity' => $node->id(), ]; $component = new SectionComponent($uuid, $region, $pluginConfiguration); $section->appendComponent($component);

レイアウトはサードパーティの設定またはフィールドに保存されることに常に注意してください。 したがって、セクションを保存するには、これらの場所のいずれかに保存する必要があります。

この場合、フィールドが使用されているため、次のようになります。

 $entity->layout_builder__layout->setValue($section); $entity->save();

これらのすべての手順に従って、単一の列セクションをエンティティに追加し、その中にサンプル ノードを表示しました。

Drupal の Layout Builder エクスペリエンスの改善にも興味があるかもしれません。

レイアウトビルダーの長所と短所

以下に、Layout Builder の長所と短所の簡単なリストをまとめました。

長所:

  • モジュールはすでにコアに含まれているため、新しいエンティティ タイプを追加する必要がないため、デプロイは簡単です。
  • ドラッグ アンド ドロップ機能を備えたユーザー フレンドリーな UI。
  • 個々のエンティティのカスタマイズの選択肢。
  • 参照フィールドを追加する必要なく、フィールドを他のエンティティと組み合わせる簡単な方法。
  • エンティティ ブロックを活用して既存のエンティティを埋め込む簡単な方法。

短所:

  • 新しいエンティティ タイプと埋め込み可能な要素が Web サイトのサイズに追加され、すべてのアイテムの読み込みにかかる時間が大幅に長くなります。
  • このモジュールは UI に重点を置いているため、新しいレイアウトの作成がより簡単になる場合があります。 現時点では、generate.yml ファイルとテンプレートを作成するコードを作成する必要があります。
  • レイアウトに多くのパーツがある場合、セクション間で要素をドラッグするのは少し難しい場合があります。
  • Twig の名前には uuid というサフィックスが付いているため、指定されたセクションのレンダリングが難しくなり、セクションへのアクセスが制限されます。

最終的な考え

Drupal Layout Builder は、ユーザー インターフェイスとコードの両方を介してレイアウトを管理するための幅広い興味深い可能性への扉を開きます。 現在のすべてのソリューションに取って代わるものですか?
私の意見では、大規模なレイアウトの問題に対処するための理想的なツールです。 Paragraphs や Field Group などの広く使用されているモジュールを使用して閉じたコンポーネントを作成し、次に Layout Builder を使用してこれらのコンポーネントで構成される既製のレイアウトを作成するのが最善の方法のようです。

Layout Builder には、他のすべての Drupal モジュールと同様に、独自の目的があります。 その結果、ある状況ではパフォーマンスが常に向上する一方で、他の状況ではパフォーマンスが大幅に低下します。 自分でチェックしてください!

Drupal に関するあらゆることを手伝ってくれる専門家をお探しなら、メールでお知らせします。