2005年7月28日

共通部分をモジュール化

category: MovableType — abetomo @ 23:50:35

すっかり連載のようになってしまった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を使うことにしよう。あとはカテゴリページの分割か。

2 件のコメント

  1. ダイナミックパブリッシング、使ってません(^^;)。
    いまいち意味がよくわからないのと、使っている人の評判がイマイチのような感じがして(気のせいかもしれません)。

    おっしゃるとおり、拡張子をphpにするだけで、phpインクルードは使えます。確かにわかりづらいですよね。

    コメント by かれん — 2005年7月29日 @ 11:07:29

  2. やっぱり、拡張子をphpにするだけでよかったんですよね!

    ダイナミック・パブリッシングの評判良くないんですかー。リビルドは確かに早いんですけど、それだけ負荷が高いんですかねえ。

    よく考えたら、ページ分割プラグインもダイナミック・パブリッシングにしていると使えないことに気がついたので、スタティック生成に戻すかもしれません・・・。

    コメント by abetomo — 2005年7月30日 @ 20:32:13

このコメント欄の RSS フィード

コメントフォームは現在閉鎖中です。

Copyright 2004-2009 abetomo, All rights reserved.
Powered by WordPress 2.6.2