MT無頼控 其の弐(IF文)
新しいHINAGATAがやっているみたいに、コメントが一個もなかったら(って、まじで一個もないんですが、私んち)、"コメントはまだありません"って表示させたいと思いました。
でも、これができるMTIfNonZeroというタグはMOVAVBLETYPEのバージョン3以降にしかないみたい。
検索してみると、ちょうどいいものがみつかりました。
MTIfNonZeroタグを説明しているのですが、2.6でおなじようなことをしていたとそのソースが載っているではありませんか。
それをプラグインにして、実現!
公開されているソースの前後にちょっと書きくわえて、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;
でもって、ここをみて、MTElseのバグの修正をおこないます。
バージョン2.661だと上半分のBuilder.pmの修正だけでだいじょうぶなようです。
たぶん。いまんところつかえてます。
こうしたらもう、MTIfNonZeroタグとおなじようにつかえます。
こちらの、
<MTIfNonZero tag="MTEntryCommentCount">>を<MTIFTrue tag="MTEntryCommentCount">>に、</MTIfNonZero>を</MTIFTrue>にする。
プラグインファイルのIFTrueをMTIfNonZeroとして宣言すればこの変更もなしにつかえるでしょう。



コメントする