【Drupal】テーマ2 
~リージョン表示の仕組み~

前回の続きです。

この時点ではBartikをコピーしただけなのでよく分かりませんよね。

なのでテーマを一つずつ解析していきたいと思います。

まずはリージョンについて解析しましょう!

リージョンとは

リージョン(region)は英語で訳すと「領域」という意味です。
Drupalのサイトを見ると、 「コンテンツを配置することができる領域」のことをリージョンと呼んでいるようです。
どのように設定するかは以下で説明していきます。

Bartikのリージョンは以下のように、bartik.info.ymlに記述されています。

themes/Custom/okitheme/okitheme.info.ymlの記述内容

~略~
regions:
  header: Header
  primary_menu: 'Primary menu'
  secondary_menu: 'Secondary menu'
  page_top: 'Page top'
  page_bottom: 'Page bottom'
  highlighted: Highlighted
  featured_top: 'Featured top'
  breadcrumb: Breadcrumb
  content: Content
  sidebar_first: 'Sidebar first'
  sidebar_second: 'Sidebar second'
  featured_bottom_first: 'Featured bottom first'
  featured_bottom_second: 'Featured bottom second'
  featured_bottom_third: 'Featured bottom third'
  footer_first: 'Footer first'
  footer_second: 'Footer second'
  footer_third: 'Footer third'
  footer_fourth: 'Footer fourth'
  footer_fifth: 'Footer fifth'

さらに、Drupalの設定画面「サイト構築」-「ブロックレイアウト」-「ブロックリージョンを仮表示する」 にアクセスしてみてください。
以下のような画面が表示されるはずです。

また、Drupalの設定画面「サイト構築」-「ブロックレイアウト」には何やら色々表示されていて、 「検索」とういものがありますね。

おや、Drupalをインストールした直後の画面にも「検索」がありましたね。

ここまでの情報から、Drupalの設定画面でリージョンに「検索」などを設定すると、 サイトに描画されて私たちが閲覧可能となることが分かります。

これで、Drupalのリージョンのイメージが大体つかめたと思います。

まさに「領域」ということですね。
では、リージョンの配置はどうやって決まっているのでしょうか。

それは、テンプレートによって決まっています。テンプレートはtwigが 制御しています。

twigとは

twigは、PHPのテンプレートエンジンというものの一種です。
テンプレートエンジンは、PHPでhtmlを作成するための作業を簡潔にするためのツールのようなイメージです。
Drupal7まではテンプレートエンジンとしてPHPTemplateを使用していました、Drupal8からtwigが使用されています。
Twigの使用方法はこちらから調査いただければと思います。

リージョンを表示するためのテンプレートは以下のようになっています。

core/themes/bartik/templates/page.html.twigの抜粋

~略~
{% if page.sidebar_first %}
<div id=”sidebar-first” class=”column sidebar”>
<aside class=”section” role=”complementary”>
{{ page.sidebar_first }}
</aside>
</div>
{% endif %}
~略~

page.html.twigに「sidebar-first」がありましたね。bartik.info.ymlに以下が記載されていたと思います。

sidebar_first: ‘Sidebar first’

つまり、page.html.twigにinfo.ymlで定義したリージョン名を記載すると、リージョンが画面上に実装され、 そのリージョンに「検索」などを設定すると、私たちが閲覧できるという流れですね。

リージョンのイメージ図

次回は、新たにリージョンを作成してみたいと思います。

私はこの本(Drupal 9 Module Development)でDrupalの 勉強をしています。
Drupal9に関する日本語の本にはない、Drupalの具体的な実装方法が記載されています。