共通部分をモジュール化
すっかり連載のようになってしまったMovableType構築記の続きです。
そもそもサイドメニューなどの共通部分をインクルードしたくてPHP化することにしたのだ。ここからがカスタマイズの本題なのである。
前回こんなこと言ってたんだけど、またしてもつまづいてしまった。
<? include("/xxx/sidemenu.php");?>のような感じでアーカイブテンプレートにインクルードを記述して再構築しても、アーカイブページにはさっぱり表示されないのだ。
パスの設定(/xxx/のところ)が間違っているのかと思っていろいろ試してみたけど、フルパスにしても相対パスにしてもやっぱり表示できない。インデックス・テンプレートのアーカイブの拡張子をphpに変えてもダメだった。
ならばメインページはどうか?と、メインページのテンプレートに記述して再構築したら、ちゃんと表示できた。ということは、sidemenu.php自体はちゃんと構築できているらしい。
そこでMTInclude moduleでアーカイブテンプレートに記述してみると、今度は表示できた。まあ、これはPHPじゃなくても使えることは確認していたので当然だろうけど。
これはどういうことかと調べてみると、「ダイナミック・パブリッシング導入法」(HINAGATA)に、こんなことが書いてあった。
PHPなどで外部ファイルをインクルードしていると、そのままでは動的に生成できません。外部ファイルをインクルードしたい場合は、MT管理画面のテンプレート管理の一番下にあるテンプレート・モジュールでモジュール化し、以下のようにしてインクルードします。
あれ~?もしかして、PHP化することと、ダイナミック・パブリッシング機能を使えるようにすることって別なのか??PHP化=ダイナミック・パブリッシングだと思っていたんだけど、PHPインクルードにするには拡張子を「php」に変えるだけで良かったのか?
ダイナミック・パブリッシングを導入するとき、再構築オプションで「アーカイブのみダイナミック」を選択したんだけど、ということは、メインページはダイナミック生成をしていないからPHPインクルードが使えて、アーカイブページはダイナミック生成をしているからPHPインクルードが使えない、ということなんだろうか。
よく分からないけど、きっとそうなんだろう。
ダイナミック生成をする限り、結局MTIncludeを使ってインクルードするしかないらしい。まあ、PHP化したおかげで、テンプレート・モジュールでモジュール化した部分を更新すれば即反映されるようなので、別にMTIncludeでもいいんだけど(スタティック生成のときは、再構築しないと更新した内容が反映されなかった)。
というわけで、メインページだけPHPインクルードにしても仕方ないので、共通部分のインクルードにはMTIncludeを使うことにしよう。あとはカテゴリページの分割か。
ダイナミックパブリッシング、使ってません(^^;)。
いまいち意味がよくわからないのと、使っている人の評判がイマイチのような感じがして(気のせいかもしれません)。
おっしゃるとおり、拡張子をphpにするだけで、phpインクルードは使えます。確かにわかりづらいですよね。
コメント by かれん — 2005年7月29日 @ 11:07:29
やっぱり、拡張子をphpにするだけでよかったんですよね!
ダイナミック・パブリッシングの評判良くないんですかー。リビルドは確かに早いんですけど、それだけ負荷が高いんですかねえ。
よく考えたら、ページ分割プラグインもダイナミック・パブリッシングにしていると使えないことに気がついたので、スタティック生成に戻すかもしれません・・・。
コメント by abetomo — 2005年7月30日 @ 20:32:13