その1で.infoファイルを作成して無事 Drupal にオリジナルテーマを認識させることができた。
テーマガイドには.info 以外のファイルは全てオプションで.info だけで機能すると書いてあったが、果たして本当だろうか?
ものは試しなので MnM Design テーマを使用してみよう。テーマ選択の画面でdefault にチェックを入れ設定の保存を押してみる。
・・・。
動くことは動くが、デザインも何もあったものじゃない、テキストのみで構成されたページが表示される。ある意味ではHTMLの正常な姿とも言えなくは無いが。
とりあえず動くことは確認できた。次に必要なものを調べよう。
.tpl.php という一連のファイルはテンプレートファイルだ。いろいろ調べた結果、page.tpl.php というテンプレートが基本ページの出力を受け持っているらしい。
Drupal のテーマが.info ファイルのみで動作するからくりは、このテンプレートファイルに該当するものがデフォルトでどこかに用意されていて、ユーザーが指定したテーマが、該当するテンプレートファイルを持っていれば、そのテンプレートファイルが自動的にデフォルトのテンプレートファイルを上書きする仕組みだからだ。テーマがテンプレートファイルを持っていなくてもデフォルトの出力がおこなわれるだけなのでなんら問題なく(見た目がいいかどうかは別として)システムは動くというわけだ。
各テンプレートファイル(.tpl.php) は拡張子が示す通りPHPで記述されているが、page.tpl.php ファイルの中身自体は、ほぼ普通のHTMLファイルと大差が無い。これは page.tpl.php ファイルの役割上、重たい処理(条件式や繰り返し、計算式など)を置くことが好ましくないからだろう。
ということは単なるHTMLでもうごくのではなかろうか?
実際にやってみた。以下のようなHTMLを page.tpl.php として保存し、テーマディレクトリーに配置してみる。
<?php /* MnM Design theme template */ ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<title>テーマテスト</title>
</head>
<body>
<p>テーマテスト!</p>
</body>
</html>はたしてどうなるのか。
結果から言えば、普通にページとして表示される。ページタイトルに「テーマテスト」、ページには「テーマテスト!」の一文。つまりページ表示用のテンプレート page.tpl.php が、その内容でデフォルトの出力を上書きした(そのまんまだが)ということだ。だからなんだという話になるが、中身が単にHTMLでいいのならデザイン自体はいままで散々やってきた手法で OK ということなのだ。
ということで、オーソドックスにヘッダーとフッターを持った3ペインのページをデザインしてみよう。もっと凝ったデザインがしたいのだが、最初から欲張るとろくなことにはならない。これも経験則。
注意:このやり方で page.tpl.php をテーマ内に配置すると、ページの出力がすべてこのHTMLで上書きされてしまう。Drupal にはキャッシュ機能があるため一度これをやってしまうと、このテーマを使用している限りページが表示されないため Drupal の機能が一切使えなくなる。テーマを変更したくても管理ページも当然表示されない。テーマフォルダを削除してもキャッシュは消えないので、page.tpl.php をまともに書き直すか、または既存のコアテーマをディレクトリーごとコピーし、作りかけのオリジナルテーマと入れ替え(単に同じ名前にリネームすれば良い)れば無事に復旧する。間違えても運用環境で試したりしないこと。
その3につづく
Recent comments