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 '';
}
を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);
}
に置き換える
return _hdlr_pass_tokens(@_);
} else {
my($ctx, $args, $cond) = @_;
return $ctx->stash('builder')->build($ctx, $ctx->stash('tokens_else'), $cond);
}
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。