MTのInclude問題は「MTIncludePlus」で解決

シェアする

#### テンプレいじりの必須知識
どのブログツールでも大差ないかと思いますが、MTでデザインを変更する場合、それぞれのページの「テンプレート」を変更することになります。少しテンプレート変更に慣れてくると、複数のテンプレートで同じ部分が繰り返されていることに気がつくでしょう。例えば「カテゴリィ一覧」や「月別アーカイブ」、「最近の記事一覧」などが代表かと思います。
さて、MTといえば再構築、というのが有名ですが(?)、できれば再構築時間を短くしたい。ちょっと記事を変更しただけで何時間も待たされる(おおげさ)のは厭だ、という人が大半でしょう。そんなときには、それぞれのテンプレートの共通部分を、何とかして使い回したいものです。
幸いにして、MTには``というピッタリの専用タグがあるので、これを使うのが解決の糸口です。インターネッツ上に、いくらでも有益な情報があります。真琴さんのところがまとまっていていいですね。
[hxxk.jp – カテゴリアーカイブとナビゲーションリスト](http://hxxk.jp/2005/02/04/0232 “hxxk.jp – カテゴリアーカイブとナビゲーションリスト”)
#### MTIncludeの仕様
いよいよ本題ですが、``には「``タグの中にはMTタグを記述できない」という仕様があります(MT3.2で確認)。
例えば、年ごとに作成された何らかのファイルを取り出すために
.php”>
と書いてもダメな訳です。どうしても読み込みたい場合は
.php’); ?>
という具合に、PHPの力にすがることになります。──でも、毎回ページが読み込まれるたびにPHPスクリプトが実行されるので、サーバに負担がかかる──と思います(どの程度かは知らない)(レンタルサーバ者の悲しさ)。
──では、どうするか?


#### MTIncludePlus
そこで、MT内で完結させるためのプラグインがあります。
[MT Extensions: MTIncludePlus 1.1](http://www.nonplus.net/software/mt/MTIncludePlus.htm “MT Extensions: MTIncludePlus 1.1”)
上記のプラグインは`MTInclude`の拡張版のような動きをします。例えば先ほどの例の場合、
archives/.php
という記述でファイルを読み込めます。
ちなみに、
.php
だとエラーになります。``は「サーバ内の絶対パス」か「MTのあるディレクトリ」にあるファイルしか読み込めないようです。
──というか、MTIncludePlusのコードを見てみると判るように、実は、MT標準のInclude機能を使っているだけという。
##### 応用例
[MTIncludePlusプラグイン:2-mix Laboratory](http://www.2-mix.jp/lab/archives/2005/10/mtincludeplus.html “MTIncludePlusプラグイン:2-mix Laboratory”)ではカテゴリィ毎に「カテゴリィ説明文」を読み出す例が書いてあります。なるほど。

#### MTFastInclude
[MT Extensions: MTFastInclude 1.1](http://www.nonplus.net/software/mt/MTFastInclude.htm “MT Extensions: MTFastInclude 1.1”)
よく解ってないまま、こちらも導入。MTIncludeを使うときにキャッシュしてくれる、のかな?
#### 「Perl版ダイナミック・パブリッシング」でも動作
[The blog of H.Fujimoto:再構築不要化カスタマイズ(全SQL対応・その1)](http://www.h-fj.com/blog/archives/2005/12/19-102034.php “The blog of H.Fujimoto:再構築不要化カスタマイズ(全SQL対応・その1)”)で紹介されている「Perl版ダイナミック・パブリッシング」でも問題なく動くのがうれしいところ。
「動的生成したページ」*から*読み込むことはもちろん、「動的生成したページ」*を*読み込むこともできました。
#### まとめ
上記の2つのプラグインは、日本語サイトであまり解説されていないので、これから流行るといいな。
あと、MTIncludePlusには``というタグがあります。これは「任意のURLを読み込む」ことができる、何とも恐ろしいタグ。ということは……ゆめがひろがりんぐ。
#### この記事のタグ(偽)
[3.3だとプラグインなしでできたりして]