MTIf var=て何?

条件文を作成するときにつかうMTIfタグですが、var=fooといった使い方もあるみたいです。

MTIfを使うときは、MTSetVarに設定した変数あるいはMTSetVarBlockMTSetVarTemplateの変数を利用して条件分岐をさせることになります。

テンプレートタグリファレンスに記載されていますようにモディファイア、name="foo"必須ということになっています。

そこまでは、テンプレートタグの説明の復唱でしかないんですが、<MTIf var="foo">といった書き方があることにこの前気づきました。

これ以降示す内容はどうでもよさげな話になります。自分でもやっているうちにどうでもよくなってきましたし。興味がありましたらお付き合いいただけたら幸いです

ActionStreamsプラグインのexample_templatesのなかにMTIf var=といった書き方がなされている箇所があります。その後の変更がなければ、code.sixapart.comの以下のページで確認できます。

ソースを見てみると、以下のようになっています。

<mt:setvarblock name="this_date"><mt:StreamActionDate format="%A"></mt:setvarblock>
<h2 class="action-stream-header asset-name">
<mt:if var="this_date" eq="$today_date">
Today
<mt:else>
<mt:var name="this_date">
</mt:if>

で、このIf var=って何?ということになったわけです。これがActionStreamsのテンプレートセットのメインインデックステンプレートだと、以下のようになってました。

MTIfの箇所のみ抜きだしてみます。*インデントのための空白は当方で削除

<mt:if name="$today_date" eq="$this_date">
Today
<mt:else>
<mt:var name="this_date">
</mt:if>

この場合だと、today_dateという変数の結果を比較対象にしてるといった感じでしょうか。このコードの前に<mt:setvarblock name="today_date"><mt:Date format="%B %e"></mt:setvarblock>というのがあって、today_dateという変数へテンプレートが再構築された日付を入れるといったことがおこなわれてます。

ここのとこでしばらくハマっていたのですけど、4.21にしてから(なのか前からかわからないけど)自分の環境で「Today」という表示が出なかったのです。そこで、サンプルのテンプレートを見たところIf var=となっていましたので書き直ししたら、Todayが表示されるようになってました。

で、以下に一連の動作確認のためだけに作ったテンプレートを置いておきます。確認はMTOS4.21+InstaMTなんかでやってました。と、ここまでやってきたものの、なんだかやってるうちにわからなくなってきたのと、そもそもActionStreamは気が向いたときにしか更新しないようにしちゃいましたので、Todayが表示される確率を考えると、条件分岐の意味がないことに気づき、結局対象となるMTIfタグは撤去してしまいました。

<html><head><title></title></head>
<body><mt:ignore>###### 再構築時刻を「date1」と「date2」へ ###########</mt:ignore>
<mt:setvarblock name="date1"><MTDate language="en"></mt:setvarblock>
<mt:setvarblock name="date2"><MTDate language="en"></mt:setvarblock><mt:ignore>###### if name="foo" の場合 ######</mt:ignore>
<p style="color:red"><mt:if name="$date2" eq="$date1">today<mt:else><mt:var name="date2"></mt:if></p>
<p style="color:green"><mt:if name="date2" eq="$date1">today<mt:else><mt:var name="date2"></mt:if></p><mt:ignore>###### if var="foo" の場合 ######</mt:ignore>
<p style="color:blue"><mt:if var="date2" eq="$date1">today<mt:else><mt:var name="date2" /></mt:if></p><mt:ignore>###### モディファイアがきいているかちょっとテスト ######</mt:ignore>
<p><mt:if var="date2" ne="$date1"><mt:var name="date2" /><mt:else>(&gt;_&lt;)</mt:if></p></body>
</html>

[追記]nameのエイリアスのようでした。参考