このブログはMoveble Typeを利用している。そして*perl版のプラグイン*をいくつか使用しているが、**全てのページが動的生成**(ダイナミック・パブリッシング)になっている(RSS Feedは除く)。
どうしているかというと、
「**MTの動的生成でperlプラグインも動作するCGI**」を利用しているからだ。
──と、これだけの説明でこのCGIの素晴らしさが解る人は、かなりのMovable Typer(造語)
。
#### まず、前提として
>**perl版のプラグインのままでは、動的に生成できません**。**プラグインもphpベースで構築されたものが必要になってきます**。ですので、perl版プラグインを仕様しているページは動的生成しないようにするか、phpベースに再構築する必要があります。
>[HINAGATA:ダイナミック・パブリッシング導入法](http://hinagata.biz/log/2004/10/22/1859.html “HINAGATA:ダイナミック・パブリッシング導入法”)
ということで(現在公開されているMTでは)、perl版のプラグインを利用したテンプレートは動的に生成できない、という仕様になっている。
それを可能にするのが、今回紹介するCGIです。
#### 設置方法
設置方法は、下記を参照してください。必ず、**両方の記事を読んでから設置**してください。
1. [The blog of H.Fujimoto: 再構築を不要にするカスタマイズ(Perl版ダイナミック・パブリッシング)](http://www.h-fj.com/blog/archives/2005/07/03-082141.php “The blog of H.Fujimoto: 再構築を不要にするカスタマイズ(Perl版ダイナミック・パブリッシング)”)
2. [The blog of H.Fujimoto: 再構築不要化カスタマイズ(セキュリティホール修正)](http://www.h-fj.com/blog/archives/2005/07/09-204927.php “The blog of H.Fujimoto: 再構築不要化カスタマイズ(セキュリティホール修正)”)
設置自体は簡単に終わる(と思う)のだが、`phptemp`フォルダを作成することをお忘れ無く。
#### 動作するperl版プラグイン
自分の環境([xrea.comのs61サーバー](http://www.s61.xrea.com/server_info.cgi “サーバーの仕様”))で動作が確認できたプラグインは、下記の通り。
* [Tagwire Plugin](http://as-is.net/blog/archives/001019.html “Ogawa::Memoranda: Tagwire Plugin”) Ver. 0.25
MTで[四畳半フォークソノミー](http://as-is.net/blog/archives/000984.html “Ogawa::Memoranda: 四畳半フォークソノミーの実現に向けて”)を実現させるプラグイン
* LastModified Ver. 1.3[IfModified](http://www.staggernation.com/mtplugins/IfModified.php “IfModified | Plugins for Movable Type | staggernation.com”)
現在は[IfModified](http://www.staggernation.com/mtplugins/IfModified.php “IfModified | Plugins for Movable Type | staggernation.com”)になっている。最新はVer. 1.4。
IfModifiedも正常に動作した。更新日時を表示するプラグイン。簡単に設置できるのでおすすめ。
* [SimpleComments](http://kalsey.com/2003/02/simplecomments “SimpleComments :: Adam Kalsey”) Ver. 1.32
[すっきりコメントプラグイン [絵文録ことのは]2003/10/02](http://kotonoha.main.jp/2003/10/02simplecomment.html “すっきりコメントプラグイン [絵文録ことのは]2003/10/02”)が詳しい。最新バージョンではPHP版もあるが、Perl版のファイルのみ利用している。
* [CPEntries](http://factage.com/yu-ji/archives/2004/06/08/cpentries-plugin-for-movabletype/ “yujilog ≫ CPEntriesプラグイン”) Ver. 0.9.3
コメントかトラックバックの最新順にエントリを表示
するプラグイン。
* [mt-sukeroku-plus.pl](http://hsj.jp/works/archives/000777.html “ささやかなる実験場の開発室(HSJ.jp): MovableType用TextFormatプラグイン mt-sukeroku-plus.pl Ver.1.00公開”) Ver. 1.00
TextFormatプラグイン。「はてな」や「Pukiwiki」風のフォーマットで記事が書ける。最新は[mt-sukeroku2 β3](http://hsj.jp/works/archives/001435.html “ささやかなる実験場の開発室(HSJ.jp): mt-sukeroku2 β3公開”)。
* [Markdown](http://daringfireball.net/projects/markdown/ “Daring Fireball: Markdown”) Ver. 1.0.1
これもテキストフォーマットプラグイン。PHP版の[PHP Markdown](http://www.michelf.com/projects/php-markdown/ “PHP Markdown”)もある。
何より、Tagwire Pluginが動作するのが大きい!!
#### キャッシュする時間を増やしてみる
`mt-dynamic`は、動的生成に付きものの一時ファイル(キャッシュ)を`phptemp`フォルダに生成する。一定時間内のアクセスに対しては、一時ファイルから呼び出される。
──ようするに、最初に誰かがページを見るときは動的生成だが、同時に`phptemp`フォルダにhtml(php)ファイルが生成される。その後、一定時間内に他の人が同じページにアクセスすると、`phptemp`フォルダ内のファイルが呼び出される。──という仕組みになっている。
つまり、「再構築がいらない」というメリットと「動的生成はページの表示が遅い」というデメリットのバランスを取る仕組み。
──なのだが、初期設定では「一定時間」が一分間(60秒間)になっているので、あまりキャッシュのありがたみがない。
そこで、`mt-dynamic.php`の21行目辺りにある
if ($now – $mtime > 60) {
これを変更し、
if ($now – $mtime > 60*30) {
こんな感じにすると、30分間キャッシュされる。
#### phpスクリプトも使える
ちょっとした小ネタ。
phpスクリプトもそのまま動作するので、
hoge.php’); ?>
と、こんな感じで他のファイルも読み込む際、読み込むファイルのパスに、**MTのタグが利用できる**。
──何が言いたいかというと、通常のPHP版動的生成では
<$MTInclude file="<$MTBlogURL$>hoge.php”$>
と書くことができる。以下を参照。
>ダイナミックパブリッシング時には、MTInclude file の挙動が変わり、テンプレートタグが変換されるようになります。
>[MTInclude とダイナミックパブリッシング – MovableType Tips by Sonots](http://www.sonots.com/mttips/mtinclude_and_dynamicpublishing.html “MTInclude とダイナミックパブリッシング – MovableType Tips by Sonots”)
──と言うことだが、`mt-dynamic`では動作しない(静的生成も同様)ので、念のため。
#### あまり使われていないのは何故──?
導入してからしばらく経つけど、何故か利用している人は少ないようだ。
記事を投稿するのにかなりの時間短縮になるので、「再構築時間の長さが気になる」というMovable Typer(造語)におすすめです。