random pics

Home > Movable Type > MTIfNonZeroをMT2.661でも

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での条件分岐が使えるのはデザインやアナウンスに広がりが出そうですね。

参考にさせていただいたみなさん、ありがとうございましたー!


参考にさせていただいたリンク

    最近のコメントを表示
    Blog質問箱にてコメントが付いた最新のエントリー5本を表示し、それぞれのエントリーごとに最新のコメント4本までをコメント日付を付けて表示するようにできましたので、そのメモです。 <div class="side"...
    休日表示カレンダープラグインを導入
    左側にひっそりとたたずむカレンダーの曜日や休日の色を変更できるプラグインを見つけ、早速インストールしてみました。 nlogさん:休日表示カレンダープラグイン 1.2 これは、MovableType のカレンダーに色づけをするプラグインです。...
    MTWeatherプラグイン導入
    お出かけのときに便利なように、Movable typeの左側に天気予報を入れてみました。使わせていただいたのはDrk7.jpさんのMTWeatherプラグイン。 Drk7jp: MTWeatherプラグイン公開 本サイトのトップページでも使...
    buslogはカテゴリーからタグへ
    buslogでは今まで記事を「メンテナンス」「ドライブ」「トラブル」といったカテゴリーごとに分類してきました。でも、メンテナンス中のトラブルはどっちのカテゴリー? メンテナンスしてからドライブしたらどっち? などと悩むことも多くありました。...
    コメントスパム対策その2
    ぬぅ。MT-Blacklistプラグインを入れても、ブラックリストを潜り抜けてがしがし着弾します。 コメント本文に日本語が含まれてないと投稿できないように改造できるようなのですが、つい最近に海外からコメントをいただいたばかりなので、弾くわけ...

Comments:0

コメントお待ちしてます

コメントお待ちしてます

Cookieに保存しますか?

Gravatarに登録しておくと、あなたの名前の横に画像が自動で表示されます

Home > Movable Type > MTIfNonZeroをMT2.661でも

最近の投稿
最近のコメント
スポンサード リンク
ブログパーツ

Return to page top