MTIfNonZeroをMT2.661でも
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での条件分岐が使えるのはデザインやアナウンスに広がりが出そうですね。
参考にさせていただいたみなさん、ありがとうございましたー!
参考にさせていただいたリンク
- cocoons.org:[c]: MT3.xのMTIfNonZeroをMT2.6xでも
- 華氏451度:MT無頼控 其の弐(IF文)
- SG::Acme:true or false
- MT-Extensions:Hacks : MTElse Fix For Plugins
- 前後のエントリー
- 最近のエントリー
-
- チョロQバス動画5つ
- ビートルで無茶してる動画3つ
- アーリーバスで無茶してる動画3つ
- レイトバスで無茶してる動画3つ
- 今日でワーゲンバス歴○○日目
- これならベバストヒーターの代わりになるかも?
- 飲酒運転を疑似体験できる飲酒運転防止ポスター
- NEXCO中日本で速度抑制キャンペーン、ETC開閉バーの開くタイミングを遅く
- ブラウンの新ウェブCM、「ご当地モーニングレポート」
- 世界「最低」の車登場 車高わずか48センチ
- にじます試食レポ 燻製1匹、金太郎味噌、金太郎漬け編
- にじます試食レポ 味噌漬け、粕漬け、ベーコン編
- にじます試食レポ 塩焼き、手作りこんにゃく、燻製3枚おろし編
- なぜブラジルに住むか、その答えはこの写真に
- 想像力あふれるクルマの使い方
Posted by masahiro : 2005年02月22日
「MTIfNonZeroをMT2.661でも」 へいただいてるコメント
「MTIfNonZeroをMT2.661でも」へのコメントはまだありません。あなたのコメントをお待ちしてます。
古いエントリーにもお気軽にコメントくださいね。ちゃんとこちらにお知らせメールが飛んできますので、コメントをいただいたことに気づきます。



