random image
2005年02月22日

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

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


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

前後のエントリー
Tags
Tags → Aircooled-Search
「MTIfNonZeroをMT2.661でも」 へのトラックバックURL

トラックバックスパムと区別するため、トラックバック元の記事中にこちらへのリンクを入れていただきますようお願いします。詳しくはトラックバック・ポリシーをご覧ください。


Posted by masahiro : 2005年02月22日

「MTIfNonZeroをMT2.661でも」 へいただいてるコメント

「MTIfNonZeroをMT2.661でも」へのコメントはまだありません。あなたのコメントをお待ちしてます。

古いエントリーにもお気軽にコメントくださいね。ちゃんとこちらにお知らせメールが飛んできますので、コメントをいただいたことに気づきます。

コメントお待ちしてます


















投稿ボタンを押したあと、処理に1分ほど時間がかかります。二度押しせず、ちょっとだけお待ちください。

お待ちの間のお茶の代わりに、クリックで進めるスライドショーできました。新しい画面が開き、今までの画像がテキトーに表示されます。(ナローバンド版はこちらです。)

buslogについて

my bus buslogは、1966年式ワーゲンバスに乗るmasahiroのサイトです。

バスの日々のメンテナンスやドライブ、試したアイテム、バスやクルマ一般についての情報を主に取り上げたブログがメインです。→詳しく

サイト内検索

RSS

RSS 1.0 RSS 2.0 ATOM 0.3 feedbuner

buslogをメールで購読する:

powered by FeedBurner

アクセスランキング