Drupal 7のブロックは非常に便利ですが、複雑なサイトではコアのブロック機能だけでは対応しきれない場面もありました。 Drupal 8はDrupal 7に比べて、コアのブロック機能がはるかに実用的で強力なものになりました。
Drupal 8では以下の機能が新規に追加されました。
- ブロックのエクスポート可能になりました
- 一つのブロックを異なる複数のリージョンに配置することが可能になりました
- ブロックにフィールドを設定する事が可能になりました
ここでは、これらの新機能とDrupal 8のブロックシステムをより使いやすくする、Block Visibility Groupsモジュールについて詳しく見ていきましょう。
ブロックのエクスポートが可能になりました
Drupal 8ではブロックをエクスポートできるようになりました。 Drupal 7では、ブロック設定はFeaturesモジュールを使用して出力可能ですが、この方法は必ずしも信頼できるとは限りません。 Drupal 8では、ブロック設定がコア設定ファイルに保存され、これらのファイルはgitなどの好きなコードリポジトリにチェックインできます。
D8のブロック構成ファイルの例
一つのブロックを異なる複数のリージョンに配置することが可能になりました
Drupal 8のもう一つの改良点としては、1つのブロックを複数のテーマリージョンに配置できることです。たとえば、Drupal 7のコアブロックでは、1つのブロックを複数のページにおいて、異なるリージョンに配置する事はできませんでした。これを実現するためには、PanelsやContextモジュールを使用する必要がありました。
Drupal 8では、1つのブロックを複数のページにおいて、異なるリージョンに配置する(同一ページ内でも可能です)。では、どのように見えるか見てみましょう。「Help」ブロックが「Header」リージョンと「Highlighted」リージョンの2か所に配置されているのが確認できます。
2つの領域に配置されている「ヘルプ」ブロックの例
ブロックにフィールドを設定可能になりました
Drupal 8ではブロックにフィールドを設定可能になりました。 Drupal 7ではブロックにフィールドを設定するにはBean(Blocks Entities Not Nodes)モジュールを使用する必要がありました。
Drupal 8では、コンテンツタイプや、その他のフィールドを設定可能なエンティティと同じ方法でブロックにフィールドを追加できます。この機能はブロックの可能性を大幅に進化させます。それぞれのブロックタイプに独自のフィールドを追加する事で、用途に応じた様々なブロックが作成可能になります。例えば、リンクだけが表示されるブロックや、画像とテキスト広告のみが入ったブロックです。ブロックタイプの使用は構造化されたコンテンツの作成に非常に役立ちます。
Block Visibility Groupsモジュールを利用するとブロックは更に便利になります
Drupal 8のブロックシステムはBlock Visibility Groupsモジュールを利用すると更に便利になります。このモジュールを有効にすると、管理者はすべてのブロックがどこで表示されるかを分かりやすく管理できます。また、カスタムブロックのリビジョン管理も可能になります。
このモジュールは、Drupal 8でPanelsやContextモジュールを利用するほどではない、比較的シンプルなサイトを作成する際にこれらのモジュールの代わりとして利用すると便利です。
終わりに
元記事では触れられていませんが、Drupal 8からはブロックもエンティティとなったため、ノードのようにカスタムブロックについてもリビジョン管理が可能になりました。これは公開前の承認や過去の更新の監査など、高度なワークフローなどを求められるサイトを構築する上で非常に大きな利点となります。
カスタムブロックにリビジョン機能が追加
また、Drupal 7でよく利用されているPanelsやContextモジュールは高機能な反面、設定が複雑な事もあり、利用する際のハードルが高いのが現状です。Block Visibility Groupsモジュールは既存のブロックシステムをベースに作動しますので初心者にはお勧めのモジュールです。
PanelsやContextモジュールを利用すると、ユーザーロールや、権限、コンテンツタイプなど非常に多岐にわたる条件に応じて、レイアウトを個別に設定する事が可能です。複雑な条件分岐によって、レイアウトを変更したい場合にはこれらのモジュールの利用をお勧めします。
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報