プライマリーカテゴリーが同じ記事の一覧を作成する

  • 投稿者:
  • カテゴリ:
このエントリーをはてなブックマークに追加

最近の記事一覧があり、さらに任意のプライマリーカテゴリーに属する記事のリンク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%も行ってないかも。

上記のサンプルをそのまま使うと空行がわんさか出来るので、テンプレート上で改行を無くすか、下記ページの方法で空行を削除した方がいいですね。

かたつむりくんのWWW:Movable Type で出力するテンプレートから空行を削除したい

このエントリーをはてなブックマークに追加

2004/02/13にMovableTypeでこのブログを始めてからカウンター日が経ちました。

公開記事数は記事数件で、日/記事数日に1エントリーのペースで記事を書いていることになります。