April 13, 2004

MTElse問題

MovableTypeで、もともと組み込み済みのMTIf系の条件タグを使うと、それと組み合わせでMTElseというのが使えますよね。でも、自前でつくったプラグインの条件タグはこのMTElseがうまく作動しないようです。

そこで、ネットで調べてみたところ自前プラグインでも、このMTElseを動作させる方法が書いてありました。ソースが英語なので、修正方法を日本語で書いておきます。

修正方法は続きをどうぞ。

/path/to/mt/lib/MT/Builder.pmの修正(sub buildの中、MT 2.63だと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);
を追加

MT2.63以下の場合は加えて修正してください(2.64以上は修正の必要なしです)
/path/to/mt/lib/MT/Template/Context.pmの修正(sub add_condtion_tagの中、MT 2.63だと43行目)

if ($condition->(@_)) {
    return _hdlr_pass_tokens(@_);
} else {
    return '';
}

if ($condition->(@_)) {
    return _hdlr_pass_tokens(@_);
} else {
    my($ctx, $args, $cond) = @_;
    return $ctx->stash('builder')->build($ctx, $ctx->stash('tokens_else'), $cond);
}
に置き換える

20:27 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/238
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。