mtde.info

Movable Type Developers Express

MTSetVarBlock

2008年1月30日 22:26 | Writer: apstar | 記事本文

MTSetVarテンプレートタグを用いた変数の生成にて、valueモデファイアへテンプレートタグを直接指定したいケースは多いです。しかし、それはできません。以下コードは、正しく動作しないです。

<MTSetVar name="ThisEntry" value="<MTEntryTitle>">

変数へテンプレートタグの出力結果を代入したい場合には、MTSetVarBlockテンプレートタグを用います。ブロックタグです。MTSetVarと異なり、閉じるタグが必要です。

基本的な書式

書式は以下のとおりです。

<MTSetVarBlock name="ThisEntry"><MTEntryTitle></MTSetVarBlock>

nameモデファイアにはMTSetVarと同じく変数名を記述します。nameモデファイアは必須です。変数名であるが、安易に短い名前ではなく、多少は意味のある語句とするほうがわかりやすいです。

valueモデファイアは存在しません。これは、<MTSetVarBlock></MTSetVarBlock>タグで囲まれた部分の実行結果がvalueとしてセットされるからです。

つまり、上記サンプルコードは、ThisEntryという変数を定義し、その値が<MTEntryTitle>の実行結果(そのエントリのエントリ名)となるという意味です。

応用的な書式

以下のように、AllEntries変数ひとつにMTEntriesブロックタグでの取得データを加工してすべてセットすることも可能です。

<MTSetVarBlock name="AllEntries">
<ul>
  <MTEntries>
     <li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
  </MTEntries>
</ul>
</MTSetVarBlock>

このサンプルコードは、AllEntries変数へ、MTEntriesブロックタグで取得した全エントリのリンク付きタイトルをul、liタグでマークアップした結果をまとめてセットする例です。

SetVar系

2008 mtde.info