MTSetVarsタグ内ではMTIfタグとMTIgnoreタグが使える
まとめて変数を設定できるMTSetVarsタグ。通常、MTSetVarsタグ内は変数名=変数が列挙されるだけの中、MTIfタグが使える事に気付きました。(ついでにMTIgnoreタグも)
もしかしたらMTユーザーの間では周知の事かもしれませんが公式ドキュメントには載っていませんし、個人的に発見時の感動が大発見並でしたので記事にしました。
例としてMT4.22デフォルトテンプレートのコメント完了を使って説明します。
<mt:If name="comment_confirmation">
<mt:Ignore><!-- Success message when comment has been submitted --></mt:Ignore>
<$mt:Var name="page_title" value="確認"$>
<$mt:Var name="message" value="<p>コメントを投稿しました。</p>"$>
<mt:Else name="comment_pending">
<mt:Ignore><!-- Pending message when comment is being held for review --></mt:Ignore>
<$mt:Var name="page_title" value="コメントありがとうございます。"$>
<$mt:Var name="message" value="<p>コメントは現在承認されるまで公開を保留されています。</p>"$>
<mt:Else name="comment_error">
<mt:Ignore><!-- Error message when comment submission fails --></mt:Ignore>
<$mt:Var name="page_title" value="コメント投稿エラー"$>
<mt:SetVarBlock name="message"><p>コメントを投稿できませんでした。エラー: <$mt:ErrorMessage$></p></mt:SetVarBlock>
</mt:If>
MTIfタグとMTElseタグの分岐で、MTVarタグとMTSetVarBlockタグを使って変数が設定されています。この記述を整理しようとする場合は通常、MTVarタグとMTSetVarBlockタグをMTSetVasタグにまとめるでしょう。
<MTIf name="comment_confirmation">
<MTIgnore><!-- Success message when comment has been submitted --></MTIgnore>
<MTSetVars>
page_title=確認
message=<p>コメントを投稿しました。</p>
</MTSetVars>
<MTElse name="comment_pending">
<MTIgnore><!-- Pending message when comment is being held for review --></MTIgnore>
<MTSetVars>
page_title=コメントありがとうございます。
message=<p>コメントは現在承認されるまで公開を保留されています。</p>
</MTSetVars>
<MTElse name="comment_error">
<MTIgnore><!-- Error message when comment submission fails --></MTIgnore>
<MTSetVars>
page_title=コメント投稿エラー
message=<p>コメントを投稿できませんでした。エラー: <$MTErrorMessage$></p>
</MTSetVars>
</MTIf>
しかし、本記事の冒頭で説明したように、MTIfタグはMTSetVarsタグ内でも使う事が出来ます。
下のソースをそれです。上のソースよりも行数が少ない上に、MTSetVarタグが少なくなった事でわかりやすくなったと思いますがどうでしょうか。
<MTSetVars>
<MTIf name="comment_confirmation">
<MTIgnore><!-- Success message when comment has been submitted --></MTIgnore>
page_title=確認
message=<p>コメントを投稿しました。</p>
<MTElse name="comment_pending">
<MTIgnore><!-- Pending message when comment is being held for review --></MTIgnore>
page_title=コメントありがとうございます。
message=<p>コメントは現在承認されるまで公開を保留されています。</p>
<MTElse name="comment_error">
<MTIgnore><!-- Error message when comment submission fails --></MTIgnore>
page_title=コメント投稿エラー
message=<p>コメントを投稿できませんでした。エラー: <$MTErrorMessage$></p>
</MTIf>
</MTSetVars>
見ればわかると思いますが、MTSetVarsタグ内ではMTIgnoreタグも使えます。MTSetVarsタグ内でコメントを記述するにはMTIgnoreタグを使うしかありません。
後記
この記事ではMTSetVarsタグ内で使えるタグとしてMTIfタグとMTIgnoreタグを紹介しましたが、実際の所はもっと多くのタグが、もしかすると制限なくタグが使えるのかもしれません。
追伸:MTSetVarsタグ内はタブインデントをしても大丈夫
MTSetVarsタグ内ではタブインデントをしても正常に動作します。これなら若干見難かった先程のソースも少しはましに見えます。
<MTSetVars>
<MTIf name="comment_confirmation">
<MTIgnore><!-- Success message when comment has been submitted --></MTIgnore>
page_title=確認
message=<p>コメントを投稿しました。</p>
<MTElse name="comment_pending">
<MTIgnore><!-- Pending message when comment is being held for review --></MTIgnore>
page_title=コメントありがとうございます。
message=<p>コメントは現在承認されるまで公開を保留されています。</p>
<MTElse name="comment_error">
<MTIgnore><!-- Error message when comment submission fails --></MTIgnore>
page_title=コメント投稿エラー
message=<p>コメントを投稿できませんでした。エラー: <$MTErrorMessage$></p>
</MTIf>
</MTSetVars>
コメント[0]
コメント投稿フォーム
コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。
トラックバック[1]
- MTSetVarsタグ内の書式で空白を挿入しても許される場合 - 45式::雑記 (2009年6月17日21:58)
- MTSetVarsタグ内の書式で、空白を挿入してもエラーにならない場合を見つけたので紹介します。
コメントはまだありません。