Individual Entry Archive(個別アーカイブ。このBlogでは、各エントリーのタイトルや更新時間をクリックするとジャンプします)の表示を少しいじってみました。
コメントが1件以上存在するときは普通にその内容を表示しますが、コメントが0件の場合、その寂しさを表現する(?)為に↓のような表示をさせる事にしました。

このような処理を行うためには、条件(この場合はコメントの数)によって、適用されるテンプレートの内容を変化させる、perl等での「 if文 」の処理が必要になります。
そうした処理は、Movable Type単体では困難(少しはできる?)なので、Movable Typeの機能を拡張させるplugin(プラグイン)を使用する事にします。
なお、この処理は
Plastic Vein > テンプレート上でのコーディング
http://stargazer.s7.xrea.com/x/archives/000020.html
のアイデアを元にしています。素敵なアイデアに感謝!
MovableTypeのプラグインは、
MT Plugin Directory (http://mt-plugins.org/)
からダウンロードできます。
ここからダウンロードしたプラグインを、インストールすることにより、新しく使えるタグを増やして、更にMTを便利に使う事ができるようになるわけです。
インストールは、「plugin」ディレクトリー(mt.cgiがあるディレクトリーと同じ階層にある)にプラグインのファイル(xxx.pl)をコピーするだけでOK(プラグインによって異なる場合もありますが)です。
個別アーカイブの表示をコメントの数によって分岐させるために、今回使ったのは
Compare
http://mt-plugins.org/archives/entry/compare.php
というプラグインです。
このプラグインでは、二つの値を比較してそれらが「等しい」「異なる」「どちらかがどちらかより大きい」などの条件で、異なる結果を出力する事ができます。また、条件となる値を複数指定できる(elseやelseif的な指定、「aが0,1,2の時、それぞれどうするか」という指定ができるので多様な表現ができます)
詳細は、
http://mt-plugins.org/local/CompareReadMe.php
を参照してください。
インストールに関しては、普通に
http://www.staggernation.com/mtplugins/Compare.tar.gzをダウンロードして、
Compare.pl をMTフォルダ直下のpluginフォルダにアップロードすれば良いです。
今回の処理は、
アーカイブのテンプレートの該当部分に
<MTIfEqual a="[MTEntryCommentCount]" b="0" numeric="1">
コメントはまだありません (ノ_・。)
</MTIfEqual>
<MTIfGreater a="[MTEntryCommentCount]" b="0" numeric="1">
<MTComments>
<$MTCommentBody$>
Posted by: <$MTCommentAuthorLink spam_protect="1"$> at <$MTCommentDate$>
</MTComments>
</MTIfGreater>
(CSSの設定は省略しています)
と表記する事で、問題なく、動きました。
Compareの他にも、条件文の処理を可能にするプラグインには
正規表現を使ったif文を実現する
Regex
http://mt-plugins.org/archives/entry/regex.php
(ifによる分岐だけで、elseifっぽくは使えない感じですが)
要素が空であるか否かでの分岐を行う
IfEmpty
http://mt-plugins.org/archives/entry/ifempty.php
(Regexが必要)
なんかがあります。
また、最後の手段として、
PerlScript
http://mt-plugins.org/archives/entry/perlscript.php
を導入すれば、テンプレート内にperlのスクリプトが記述できるようです。
これは私もまだ試してないですが、、
なんと言うか、そんなことしたら、なんかMTタグの存在意義があやふやになってしまうというか、なんでもアリになりすぎになってしまう気も。。
お邪魔します。
素晴らしいっす!!
ぜひ使わせていただきます。
それにしてもプラグインって有効なものが
多いんですね、ビックリしました。
よくプラグインの例として出されるのが
クリスマスまで後何日プラグインとか
なので、そんなのばっかりかと思ってました(笑)。
さっそく帰ったら実装してみます。
すみません、ping二回打ってしまいました。
お手数ですが削除のほどお願いいたします。
すみませんでした。