最近の記事一覧があり、さらに任意のプライマリーカテゴリーに属する記事のリンク10件を一覧を表示させる。ただし、任意のプライマリーカテゴリーのリンクには、すでに最近の記事一覧に既出の記事は含めない。
こんな内容の質問を某所で見つけたので、ちょっとやってみました。
//条件
//任意のプライマリーカテゴリー:MovableType Tips
//表示件数:10件
//記事のリンクはページ内で重複させない
<ul>
//任意のプライマリーカテゴリーに属する記事10件をカウントするためのカウンター
<mt:SetVar name="counter" value="1">
//モディファイアunique="1"を設定してページ内でリンクが重複しないようにする
<mt:Entries include_blogs="3" lastn="0" unique="1">
//記事のプライマリーカテゴリーを変数「pcat」にセットする
<mt:EntryPrimaryCategory><mt:CategoryLabel setvar="pcat"></mt:EntryPrimaryCategory>
//カウンターが10以内の場合に処理を実行する条件分岐
<mt:If name="counter" le="10">
//プライマリーカテゴリーが「MovableType Tips」の場合に処理を実行する条件分岐
<mt:If name="pcat" eq="MovableType Tips">
<li class="menu_item"><mt:EntryTitle></li>
//処理が1件終わるごとにカウンターに1を足す
<mt:SetVar name="counter" op="+" value="1">
</mt:If>
</mt:If>
</mt:Entries>
</ul>
上記で出来たのですがMovableTypeタグリファレンス見てたら「MTIfCategory」というタグがあった。
「MTIfCategory」を使う場合は下記のような感じ。
//条件は上記と同じ
<ul>
//任意のプライマリーカテゴリーに属する記事10件をカウントするためのカウンター
<mt:SetVar name="counter" value="1">
//モディファイアunique="1"を設定してページ内でリンクが重複しないようにする
<mt:Entries include_blogs="3" lastn="0" unique="1">
//カウンターが10以内の場合に処理を実行する条件分岐
<mt:If name="counter" le="10">
//対象のカテゴリーを「MovableType Tips」にして、さらに対象の範囲をプライマリーカテゴリーにする
<mt:IfCategory name="MovableType Tips" type="primary">
<li class="menu_item"><mt:EntryTitle></li>
//処理が1件終わるごとにカウンターに1を足す
<mt:SetVar name="counter" op="+" value="1">
</mt:IfCategory>
</mt:If>
</mt:Entries>
</ul>
MTタグ「MTIfCategory」があるので、こちらを使ったほうがスッキリでいいですね。
熟思ったのは、すべてのMTタグやグローバルモディファイア、環境変数などで自分が使っているのは10%以下なんじゃないかと...。いや、5%も行ってないかも。
上記のサンプルをそのまま使うと空行がわんさか出来るので、テンプレート上で改行を無くすか、下記ページの方法で空行を削除した方がいいですね。