第23回:テンプレートをモジュール化する
第22回では、長くなったページを分割する方法について説明しました。今回は、複数のページで何度も繰り返して使用するヘッダーやフッター、サイドバーなどのパーツをモジュール化し、そのモジュールを各テンプレートから読みこませて利用する方法について説明していきます。このように各パーツをモジュール化することで、テンプレートを管理する手間を軽減させ、再構築時間を短縮させることができるようになります。
まず、自分のサイト内をざっと見渡して、モジュール化できる部分を探してみましょう。
筆者のサイトで考えてみると、ヘッダーとフッターがモジュール化できる部分にあたり、全てのページで共通した部分になっています。このヘッダーとフッターをモジュールとして作成し、各テンプレートから読み込ませれば、今まで1エントリーごとに再構築させていたヘッダーとフッター部分のソースを出力する必要がなくなるので、必然的に再構築時間は短くなります。
そこで、このヘッダーとフッターをどうやって読み込ませるかですが、方法は2通りあります。ひとつは、Movable Type標準タグのMTIncludeタグを用いてモジュールを読み込む方法。もうひとつは、PHP を使ってファイルをインクルードする方法です。
■MTIncludeでテンプレートモジュールを読み込む方法
MTIncludeタグでテンプレートモジュールを読み込むには、予め、モジュールを新規に作成しておきます。「テンプレート」→「モジュール」→「モジュールを新規作成」から新規モジュールを作成してください(以下図参照)。この時に指定する「テンプレート名」が、MTIncludeタグのmodule 属性で指定するモジュールの名前と同じになります。「モジュールの内容」には、ヘッダーとして表示させたいHTMLソースを挿入してください。
次に、ヘッダーを読み込ませたいテンプレートに以下の1行を貼り付けます。たったこの1行を記述するだけで、そのテンプレート内にヘッダーが読み込まれるようになります。必要とあらば、全てのテンプレートに以下の1行を挿入します。なお、ヘッダーを修正する場合は、このheader モジュールを修正するだけで全てのページが置き換わるので、管理が非常に楽になります。
上記では、headerをモジュール化した後、MTIncludeタグでそれを読み込ませるようにしましたが、テンプレートモジュールを読み込むのと同じように、外部ファイルを読み込む事もできます。その場合、module 属性ではなく、file 属性を用います。但し、file 属性で外部ファイルを読み込む場合は、そのファイル内でMTタグを使用する事ができませんので注意してください。
■PHPでファイルをインクルードする方法
MTIncludeタグに頼らずに、PHPを使ってファイルをインクルードする方法もあります。この方法での最大の利点は、わざわざMovable Typeの管理画面を開かずとも、普段使い慣れたホームページ作成ソフトや専用テキストエディタなどでちゃちゃっと素早く更新できる点です。勿論、直接ファイルを編集するだけなので再構築は一切不要です。例えば、サイドバーに広告を表示させるような場合には、PHPでインクルードさせた方が更新の手間がかからないので、より好ましいと言えるでしょう。
実際に、外部ファイルを読み込むには、require や include関数を用います。両者は、エラー処理を除いてほぼ同じ意味になります。なお、PHPで外部ファイルを読み込ませる場合も、そのファイル内(ここでは、header.php)にMTタグを記述することができませんので注意してください。また、外部ファイルを読み込ませる場合には、インクルードさせるファイルの文字コードをMovable Typeの文字コードに合わせておきましょう。そうでないと、文字化けの原因となります。
<?php include("<$MTBlogURL$>header.php")?>
今回は、ヘッダーファイルを読み込ませる方法について説明しましたが、ご自分のサイトをよく眺めながらモジュール化できる部分は可能な限りモジュール化してしまいましょう。例えば、「最近のコメント」や「最近のトラックバック」「月別アーカイブ」など、モジュール化できる部分は意外とたくさんあります。但し、あまりに細かくモジュール化しすぎると、返って管理が複雑になり本末転倒となってしまうので、わかりやすい程度にほどほどにしておくのがBESTだと思います。
以上、第23回は終了です。
参考になりましたらポチっとお願いします♪