
先月未に行った風のまにまに号のサイト・リニューアルでは、Macromedia風テンプレート for 3.0をベースにしてデザインを変更したのですが、それと合わせてサイドメニュー内の各項目や、ヘッダ・フッタ等の共通要素を全てPHPのinclude(埋め込み)を使ってモジュール化しました。配布版のMacromedia風テンプレートでは、比較的環境を問わずに導入できるJavaScriptによる埋め込みでモジュール化をしていますが、シングルクォーテーションの問題でRecent CommntやRecent Trackbackを表示できなかったり、テンプレート内で改行が使えないためデザイン上の制約が大きい、という欠点がありました。PHPが使えるサーバであれば今回紹介する方法でよりダイナミックなモジュール管理をすることができます。
アーカイブの設定
サーバがPHPに対応していることを前提として、まずモジュールを埋め込みたい全てのアーカイブについて、拡張子を.phpに変更する必要があります。私の場合は各アーカイブのファイル名も元々カスタマイズしているので、以下のような設定になりました。 「メインメニュー」→「ウェブログの設定」→「アーカイブの設定」- 個別エントリーアーカイブ
- <$MTArchiveDate format="%Y/%m%d%H%M%S"$>.php
- 日付アーカイブ
- <$MTArchiveDate format="%Y/%m"$>_index.php
- カテゴリーアーカイブ
- <$MTCategoryLabel$>.php
さらにトップページ(メインページ)にも埋め込みたい場合には、
「テンプレート」→「メインページ」
へ進んで「出力ファイル名」の部分の拡張子も変更しておきます。
index.php
※通常メインページをindex.phpにして、今まであったindex.htmlを削除すれば、index.phpの方がトップページとして認識されますが、うまく行かない場合は下記のページを参考に拡張子の優先順位付け等を行いましょう。
⇒.htaccess活用法「9.index.cgiやindex.phpをトップページにする方法」
ヘッダ・フッタのモジュール化
ヘッダとフッタの共通部分をPHP includeでモジュール化しました。header.php(例)
<div id="siteName">footer.php(例)
<img src="/ww-second/logo.gif">
</div>
<div id="siteInfo">
Copyright (C) 2004 Wandering Wind, inc. All Rights Reserved.
</div>
外部ファイルとして切り出したい部分のソースだけを上記ファイル内に記述して、各アーカイブ・テンプレート内のヘッダ・フッタを表示したい箇所に、
<? include"../../header.php";?>
<? include"../../footer.php";?>のように記述します。こうすることで、ヘッダやフッタのデザインを変えたくなったらheader.phpや footer.phpを一枚変更して FTPするだけで全てのアーカイブに瞬時に反映することができます。
ここで注意したいのが、各アーカイブのパスと、FTPでアップする埋め込みファイルとの相互関係で、私の場合、「個別エントリーアーカイブ」のパスが、
http://wandering-wind.jp/archives/2004/1124193651.php
のようになって、ヘッダの埋め込みファイルのアップ先が、
http://wandering-wind.jp/header.php
となっているので、PHP includeの呼び先は相対パスで2階層上のパスを指定することできちんと表示されていますが、アーカイブの出力先をカスタマイズしている場合は、各アーカイブごとにパスの記述をケアする必要があります。
・・と、ここまでがごく一般的なPHP includeのやり方ですが、次回はこれを使ってMacromedia風テンプレートの追加テンプレートを作る方法や、サイドメニューを階層的にモジュール化することでより効率的に管理する方法等を紹介します。
風のまにまに号

コメントする