• 更新:
  • 投稿:
  • カテゴリィ:

テンプレいじりの必須知識

どのブログツールでも大差ないかと思いますが、MTでデザインを変更する場合、それぞれのページの「テンプレート」を変更することになります。少しテンプレート変更に慣れてくると、複数のテンプレートで同じ部分が繰り返されていることに気がつくでしょう。例えば「カテゴリィ一覧」や「月別アーカイブ」、「最近の記事一覧」などが代表かと思います。

さて、MTといえば再構築、というのが有名ですが(?)、できれば再構築時間を短くしたい。ちょっと記事を変更しただけで何時間も待たされる(おおげさ)のは厭だ、という人が大半でしょう。そんなときには、それぞれのテンプレートの共通部分を、何とかして使い回したいものです。

幸いにして、MTには<MTInclude>というピッタリの専用タグがあるので、これを使うのが解決の糸口です。インターネッツ上に、いくらでも有益な情報があります。真琴さんのところがまとまっていていいですね。

hxxk.jp - カテゴリアーカイブとナビゲーションリスト

MTIncludeの仕様

いよいよ本題ですが、<MTInclude>には「<MTInclude>タグの中にはMTタグを記述できない」という仕様があります(MT3.2で確認)。

例えば、年ごとに作成された何らかのファイルを取り出すために

<MTInclude file="<MTArchiveDate format="%Y">.php">

と書いてもダメな訳です。どうしても読み込みたい場合は

<?php readfile('<MTArchiveDate format="%Y">.php'); ?>

という具合に、PHPの力にすがることになります。──でも、毎回ページが読み込まれるたびにPHPスクリプトが実行されるので、サーバに負担がかかる──と思います(どの程度かは知らない)(レンタルサーバ者の悲しさ)。

──では、どうするか?

MTIncludePlus

そこで、MT内で完結させるためのプラグインがあります。

MT Extensions: MTIncludePlus 1.1

上記のプラグインはMTIncludeの拡張版のような動きをします。例えば先ほどの例の場合、

<MTIncludeFile><MTBlogSitePath>archives/<MTArchiveDate format="%Y">.php</MTIncludeFile>

という記述でファイルを読み込めます。

ちなみに、

<MTIncludeFile><MTArchiveDate format="%Y">.php</MTIncludeFile>

だとエラーになります。<MTIncludeFile>は「サーバ内の絶対パス」か「MTのあるディレクトリ」にあるファイルしか読み込めないようです。

──というか、MTIncludePlusのコードを見てみると判るように、実は、MT標準のInclude機能を使っているだけという。

応用例

MTIncludePlusプラグイン:2-mix Laboratoryではカテゴリィ毎に「カテゴリィ説明文」を読み出す例が書いてあります。なるほど。

<MTIncludeModule><MTCategoryDescription></MTIncludeModule>

MTFastInclude

MT Extensions: MTFastInclude 1.1

よく解ってないまま、こちらも導入。MTIncludeを使うときにキャッシュしてくれる、のかな?

「Perl版ダイナミック・パブリッシング」でも動作

The blog of H.Fujimoto:再構築不要化カスタマイズ(全SQL対応・その1)で紹介されている「Perl版ダイナミック・パブリッシング」でも問題なく動くのがうれしいところ。

「動的生成したページ」から読み込むことはもちろん、「動的生成したページ」読み込むこともできました。

まとめ

上記の2つのプラグインは、日本語サイトであまり解説されていないので、これから流行るといいな。

あと、MTIncludePlusには<MTIncludeURL>というタグがあります。これは「任意のURLを読み込む」ことができる、何とも恐ろしいタグ。ということは……ゆめがひろがりんぐ。

この記事のタグ(偽)

[3.3だとプラグインなしでできたりして]

[2] このページの一番上へ戻る