条件文を作成するときにつかうMTIfタグですが、var=fooといった使い方もあるみたいです。
MTIfを使うときは、MTSetVarに設定した変数あるいはMTSetVarBlock、MTSetVarTemplateの変数を利用して条件分岐をさせることになります。
テンプレートタグリファレンスに記載されていますようにモディファイア、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>(>_<)</mt:if></p>
</body>
</html>
- Newer: vLetterの筆記体
- Older: Firefoxアドオン、ステータスバーの整理にOrganize Status Bar
- メモ:特定カスタムフィールドの値は提供されたタグで
- コメントタグ内のMTタグ
- ウェブページのページごとでカラムレイアウトを替える
- メモ:タイトルに角形括弧が含まれる記事に何かするテンプレート
- 記事ページのTopicPathをひとつだけにした
- 今頃、MTのヘッダの出力解決メモ
- Movable Typeのjsファイル内の関数を利用したShow-Hideのカスタマイズ
- MT:EntryBasenameに基づいた記事のフィルタリング
- 今月のいらんことしい(2009年7月)
- はてブ:エントリーページのURI変更にあわせたEntryPermalinkの書き方なのだが。。
Comments:2
コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ
- 2008年10月 5日 12:04
- こんにちは。 へぇー、そんな書き方あったんですね。 普通に考えれば、nameのエイリアスっぽいけど、動作が異なるとすると、何なんでしょう?
- 2008年10月 5日 14:36
- >oscar様 こんにちは。記事で触れなかったんですが、最初、var モディファイアみたいなものがあって、If文で変数名を定義でもしてるのかなと思ってましたのですが。でも実際のところこれを使うような場所が見つからないんですよね。謎です。