MT仕事で必要となってきたのが、変数のセット。
この分岐を理解することが、複雑な分岐がある程度クリアできてくる。
まずは変数をセットする構文。
大体2種類があるがどれも同じ命令となる。
例えば、mt:EntryIDをentry_numに入れる方法。
<MTSetVarBlock name="entry_num"><mt:EntryID></MTSetVarBlock> <mt:EntryID setvar="entry_num">
例えば、記事のエントリーIDが999の場合は、この「999」がentry_numに収められる。
2番目のはmt:EntryIDを直で書いているように見えるが、変数に入れられるので表示はされない。
そして、entry_numに入った値を表示する方法は、Getvarを使う。
<mt:GetVar name="entry_num">
しかし、この値をMTタグ内で使用する際は、getvarでは対応できないので、「$」で呼び出すことになる。
<mt:Entries id="$entryid"> <mt:EntryTitle> </Entries>
mt:if内では、nameに入れて、その値をモディファイアと比較することで、分岐を行える。
下記の内容だと、エントリーIDが999の場合、1000の場合、それ以外の場合、という分岐の内容になる。
<mt:If name="entry_num" eq="999"> <p>私はゾウを愛しています</p> <mt:ElseIf eq="1000"> <p>私はゾウより、シロクマを愛しています</p> <mt:Else> <p>私はゾウもシロクマも愛していないのです</p> </mt:If>
これを利用して、インデックステンプレートかカテゴリーテンプレートか、それとも記事テンプレートか・・・というような判別にも使える。各テンプレートの1行目などに仕込んでおくと超便利。下記の物はサンプルであるので、独自に名前を付けたり、インデックステンプレートが複数あるから名前を変えるなどもOK。
<$MTSetVar name="main_index" value="1"$> <$MTSetVar name="category_index" value="1"$> <$MTSetVar name="entry_archive" value="1"$> <$MTSetVar name="page_archive" value="1"$>
そしてこれを分岐させる。
<mt:If name="main_index"> トップの時 <mt:ElseIf name="archive_index"> アーカイブ用インデックスの時 <mt:ElseIf name="entry_archive"> エントリーの時 <mt:ElseIf name="page_archive"> ウェブページの時 <mt:Elseif name="category_archive"> カテゴリの時 <mt:ElseIf name="datebased_archive"> 月や年アーカイブの時 <mt:else> その他 </mt:If>
MTの分岐もいろいろ面倒だが、分かりやすいと言えば分かりやすい。
追記。ループの回数でもいろいろできる模様。
例えば、記事を3個出すが、それぞれdivのクラスが違う場合とかに使える。
<MTEntries lastn="3"> <mt:If name="__counter__" eq="1"> <div class="box1"> <mt:elseIf name="__counter__" eq="2"> <div class="box2"> <mt:elseIf name="__counter__" eq="3"> <div class="box3"> <mt:Else> </mt:If> <$mt:Include module="ブログ記事概要"$> </div> </MTEntries>
incrementを使うことで増加する数値にも対応できるらしい。それについてはまだ必要ないかもしれないが。
これらで使える特殊変数はこんな物がある。
__first__ ループ出力の最初である場合 true (1) となります。 __last__ ループ出力の最後である場合 ture (1) となります。 __odd__ ループ出力の奇数回目の場合 ture (1) となります。 __even__ ループ出力の偶数回目の場合 ture (1) となります。 __index__ ループのインデックスを格納します。 __counter__ ループした回数を格納します。