April 13, 2004MTElse問題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以上は修正の必要なしです) 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); } コメント
コメントする
|
スポンサード リンク
|