- 2005-02-22 (火)
- Movable Type
- Reading time: 4分ぐらい
HINAGATAさんのテンプレートで見つけ、サイトでのエントリで詳しい説明も見つけた便利な条件分岐タグ、MTIfNonZero。試してみてもうまく動作しなかったのはどうやらMovable Type 3 以降で実装されたタグだったからなんですが、MT 2.661でも使えるようにできました。
まずはバグがあるらしい/lib/MT/Builder.pmを訂正します。MT2.661で98行目にある
my($tokens, $uncompiled);
に以下を書き加えます。
my $tokens_else;
同じように
$tokens = [ grep $_->[0] ne 'Else', @{ $t->[2] } ];
に以下を書き加えます。
$tokens_else = [ grep $_->[0] eq 'Else', @{ $t->[2] } ];
さらに、
$ctx->stash('tokens', $tokens);
に以下を書き加えます。
$ctx->stash('tokens_else', $tokens_else);
最後にプラグインを作成します。といっても下記のソースをテキストエディタなどに貼り付け、MTIFTrue.plとして保存、MTのプラグインフォルダにアップロードするだけです。
package MT::Plugin::IFTrue;
use vars qw( $VERSION );
$VERSION = 0.1;
MT::Template::Context->add_conditional_tag(IfTrue => \&_if_true);
sub _if_true {
my ($ctx, $args) = @_;
$args->{tag} =~ s/^MT//;
my $handler = $ctx->handler_for($args->{tag});
if ( defined $handler ) {
$handler->($ctx, $args) and return 1;
}
return 0;
}
1;
これで、MT3のMTIfNonZeroタグと同じ動きをしてくれるMTIfTrueタグができました。あとはHINAGATAのテンプレと同じように、
<MTEntryIfAllowComments>
<MTIfTrue tag="MTEntryCommentCount">
コメント表示リンク関連タグ
<MTElse>まだコメントはありません。</MTElse>
</MTIfTrue>
</MTEntryIfAllowComments>
と変更します。If~elseでの条件分岐が使えるのはデザインやアナウンスに広がりが出そうですね。
参考にさせていただいたみなさん、ありがとうございましたー!
参考にさせていただいたリンク
こちらもどうぞ!
- 最近のコメントを表示
- Blog質問箱にてコメントが付いた最新のエントリー5本を表示し、それぞれのエントリーごとに最新のコメント4本までをコメント日付を付けて表示するようにできましたので、そのメモです。 <div class="side"...
- 休日表示カレンダープラグインを導入
- 左側にひっそりとたたずむカレンダーの曜日や休日の色を変更できるプラグインを見つけ、早速インストールしてみました。 nlogさん:休日表示カレンダープラグイン 1.2 これは、MovableType のカレンダーに色づけをするプラグインです。...
- MTWeatherプラグイン導入
- お出かけのときに便利なように、Movable typeの左側に天気予報を入れてみました。使わせていただいたのはDrk7.jpさんのMTWeatherプラグイン。 Drk7jp: MTWeatherプラグイン公開 本サイトのトップページでも使...
- buslogはカテゴリーからタグへ
- buslogでは今まで記事を「メンテナンス」「ドライブ」「トラブル」といったカテゴリーごとに分類してきました。でも、メンテナンス中のトラブルはどっちのカテゴリー? メンテナンスしてからドライブしたらどっち? などと悩むことも多くありました。...
- コメントスパム対策その2
- ぬぅ。MT-Blacklistプラグインを入れても、ブラックリストを潜り抜けてがしがし着弾します。 コメント本文に日本語が含まれてないと投稿できないように改造できるようなのですが、つい最近に海外からコメントをいただいたばかりなので、弾くわけ...
- Newer: イギリスバスは鼻が高い
- Older: コメントの表示順を一目でわかるように
- Tags → Aircooled-Search:
- Movable Type




