Drupalでサブテーマを作成する

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

はじめに

ベーステーマを継承してサブテーマを作成します。ベーステーマが更新されても改変したコードはサブテーマ用ディレクトリに作成されているためロールバックされることはありません。

メインテーマをダウンロードする

 

今回利用するベーステーマはBootstrap for Drupalです。テーマ公開のページにアクセスし、コントリビュートテーマと同様にダウンロードします。

 解凍したフォルダをthemes/contrib下に保存し、まずはテーマ管理画面から「Bootstrap for Drupal 8.x」を「インストールしてデフォルトに設定」します。

 トップページに戻ると、ベーステーマのデザインが反映されています。

サブテーマを作成する

ベーステーマのインストールが完了したら、サブテーマを作成します。ここで紹介するのは汎用的な方法なので、実際のサブテーマ作成方法は各ベーステーマのドキュメントを参照してください。

 まずはサブテーマのフォルダをthemes/custom/に「subtheme_bootstrap」として作成し、中にsubtheme_bootstrap.info.ymlファイルを配置します。

subtheme_bootstrap.info.yml

name: 'Subtheme Bootstrap'
type: theme
description: 'Bootstrapベースのサブテーマです。'
core_version_requirement: ^8 || ^9 || ^10
base theme: bootstrap_for_drupal

 ymlファイルのbase themeプロパティでベーステーマを指定します。これにより、ベーステーマを拡張する形でサブテーマを作成できます。テーマ管理画面にSubtheme Bootstrapテーマが追加されているので、「インストールしてデフォルトに設定」します。

 テーマが変更されましたがトップページに戻ると、デザインが変わっていないことが確認できます。

 このサブテーマ機能を利用することで、ベーステーマを上書きすることなく、デザインを継承した独自のテーマを作ることができます。CSSやJSを追加する方法はカスタムテーマの時と同様です。

リージョンを追加する

 最後にリージョンを追加する方法を紹介します。リージョンとは連載第2回で紹介したブロックを配置することができるスロットです。まずsubtheme_bootstrap.info.ymlにregionsプロパティを追加します。値はBootstrap for Drupalのinfo.ymlのものをコピーし、「footer_sub_right: ‘Footer sub – right box’」行の下に「footer_bottom: ‘Footer Bottom’」行を挿入します。

subtheme_bootstrap.info.yml

name: 'Marucha Bootstrap'
type: theme
description: 'Bootstrapベースのサブテーマです。'
core_version_requirement: ^8 || ^9 || ^10
base theme: bootstrap_for_drupal
regions:
  header_special: 'Header - special'
  nav_main: 'Navigation - Main'
  nav_add: 'Navigation - Additional '
  content_before: 'Content - before'
  content: 'Content - main '
  content_after: 'Content - after'
  sidebar_left: 'Content - Sidebar'
  footer_left: 'Footer - left box'
  footer_center: 'Footer - center box'
  footer_right: 'Footer - right box'
  footer_sub_left: 'Footer sub - left box'
  footer_sub_center: 'Footer sub - center box'
  footer_sub_right: 'Footer sub - right box'
  footer_bottom: 'Footer Bottom'
  modal_container: 'Modal box container'

 次にBootstrap for Drupalテーマのテンプレートを上書きします。まず、/themes/contrib/bfd/templates/layout/page.html.twigファイルを/themes/custom/subtheme_bootstrap/templates内にコピーします。templatesフォルダは新規に作成してください。コピーしたファイルの最下部に以下のコードを追加します。

{% if page.footer_bottom %}
  {{ page.footer_bottom }}
{% endif %}

 最後に、キャッシュをクリアし、サイト構築>ブロックレイアウトの画面からFooter Bottomリージョンに「配信」ブロックを追加します。その際に「ディスプレイ・タイトル」のチェックボックスは外してください。

 配信ブロックがきちんとページに掲載されているか確認するために、試しにトップページ以外のページ、例えば以前作成したHELLOWORLDページ(/helloworld)にアクセスしてみます。アクセスするとページ最下部にRSSアイコンが表示されています。

 なお、トップページにはこのアイコンは表示されません。これはトップページ専用のページテンプレートであるpage–front.html.twigファイルがBootstrap for Drupalに存在しているため、そちらが優先されて表示されるためです。必要に応じ、Marucha Bootstrapテーマ内に同名のファイルを置くことでトップページのリージョンもカスタマイズできます。

このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました