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. まず、バックアップをきちんと取ります
  2. page.tpl.phpにPHPで分岐コードを書きます。


この分岐は、ホームディレクトリ以下、1つ目のスラッシュで区切ったところに"example"の記述があるページはexample.tpl.phpを参照する。それ以外はdefault.tpl.phpを表示する、というswitch文による分岐です。

これだけですと上記表のパス指定の派生ページでも実現可能ですが、このようなswitch文があれば、分岐の分岐、ということも可能になりますので知っておくと便利です。