Drupal_ページごとに異なるデザインにする
Drupalにはテーマ[theme]というものがあり、これを選ぶことによって、サイト全体にひとつのデザインテーマが指定されます。これにより、どのページを見ても共通のデザインが適用され、統一感のあるサイト作りが可能になっています。
しかし、ひとつのサイト内に商品の特設サイトを設けるなど、異なるデザインを適用したい場合があります。これを可能にする方法は、いくつかあります。
まず、Drupalのテーマに関する仕組みを理解するため、次の表を見てください。
テンプレートファイル | 適用されるページ |
---|---|
page.tpl.php | 全てのページに適用される |
page-front.tpl.php | トップページにのみ適用される |
page-node-(コンテンツID).tpl.php | 任意のコンテンツページ(異なるデザインを表示させたいページのコンテンツIDを指定)に適用される |
page-(aaa-bbb-ccc).tpl.php | 任意のパス「/aaa/bbb/ccc」以下で表示されるページに適用される |
Drupalは、ページの表示をするために、テンプレートファイル「***.tpl.php」を探します。その優先順位が、特殊なもの>page.tpl.php(デフォルトデザイン)なのです。これら特殊なページのことを「派生ページ」といいます。
デフォルトデザインのpage.tpl.phpを元に、コードを追加し、新しいテンプレートファイルを作成したとします。これをpage.tpl.phpと同じディレクトリにアップロードすれば派生ページとして適用されます。
これらの方法とは別に、PHPでデザインを分岐させる方法があります。以下にその方法をご紹介します。
この分岐は、ホームディレクトリ以下、1つ目のスラッシュで区切ったところに"example"の記述があるページはexample.tpl.phpを参照する。それ以外はdefault.tpl.phpを表示する、というswitch文による分岐です。
これだけですと上記表のパス指定の派生ページでも実現可能ですが、このようなswitch文があれば、分岐の分岐、ということも可能になりますので知っておくと便利です。