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のエイリアスのようでした。参考

Comments:

コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ

oscar 2008年10月 5日 12:04
こんにちは。 へぇー、そんな書き方あったんですね。 普通に考えれば、nameのエイリアスっぽいけど、動作が異なるとすると、何なんでしょう?
maRk 2008年10月 5日 14:36

blog comments powered by Disqus