ブログ記事ページに自分が属するカテゴリのツリーと直属カテゴリの他のブログ記事一覧を表示する

ブログ記事ページに自分が属するカテゴリのツリーと直属カテゴリの他のブログ記事一覧を表示する

Posted at March 23,2011 2:55 AM
Tag:[Category, MovableType]

Movable Typeのブログ記事ページに、自分が属するカテゴリのツリーと直属カテゴリの他のブログ記事一覧を表示するカスタマイズです。

例えば「業務提携に関するお知らせ」というブログ記事ページを表示したとき、図のように、ブログ記事ページのサイドバーに自分が属するカテゴリ「親カテゴリ」「子カテゴリ」と、直属のカテゴリ「孫カテゴリ」に属する他のブログ記事「オフィシャルサイトオープン」「ホームページリニューアル」を表示します。

カスタマイズ

ウィジェットテンプレートに次の内容を貼り付けてください。

<mt:if name="entry_archive">
<mt:IfArchiveTypeEnabled archive_type="Category">
 
<mt:EntryCategory setvar="category" />
<mt:ParentCategories>
  <mt:SetVarBlock name="push(label)"><mt:CategoryLabel /></mt:SetVarBlock>
  <mt:SetVarBlock name="push(list)"><a href="<mt:CategoryArchiveLink />"><mt:CategoryLabel /></a></mt:SetVarBlock>
  <mt:if tag="CategoryLabel" eq="$category">
    <mt:CategoryID setvar="category_id">
  </mt:if>
</mt:ParentCategories>
 
<div class="widget-archive widget-archive-category widget">
    <h3 class="widget-header">カテゴリ</h3>
    <div class="widget-content">
 
<mt:loop name="list">
<mt:SetVar name="end_tag" value="</ul></li>" append="1" />
<ul><li><mt:GetVar name="__value__" />
  <mt:if name="__last__">
 
    <mt:GetVar name="label" glue="/" setvar="category" />
    <mt:Entries category="$category">
    <mt:EntriesHeader>
  <ul>
    </mt:EntriesHeader>
  <li><a href="<mt:EntryPermalink>"><mt:EntryTitle /></a></li>
    <mt:EntriesFooter>
  </ul>
    </mt:EntriesFooter>
    </mt:Entries>
    <mt:GetVar name="end_tag" />
  </mt:if>
</mt:loop>
 
    </div>
</div>
 
</mt:IfArchiveTypeEnabled>
</mt:if>

最初のMTParentCategoriesの部分で自分が属するカテゴリのIDと、上位カテゴリの一覧を配列変数listに取得します。配列変数labelは、あとでブログ記事一覧を取得するときのcategoryモディファイアに設定するために取得します。

<mt:EntryCategory setvar="category" />
<mt:ParentCategories>
  <mt:SetVarBlock name="push(label)"><mt:CategoryLabel /></mt:SetVarBlock>
  <mt:SetVarBlock name="push(list)"><a href="<mt:CategoryArchiveLink />"><mt:CategoryLabel /></a></mt:SetVarBlock>
  <mt:if tag="CategoryLabel" eq="$category">
    <mt:CategoryID setvar="category_id">
  </mt:if>
</mt:ParentCategories>

MTLoopタグでは、配列変数listの内容を順番に出力し、最後のカテゴリ(=自分が属するカテゴリ)でMTEntriesタグを使ってブログ記事一覧を出力します。MTEntriesタグのcaetgoryモディファイアには配列変数labelの値を与え、glueモディファイアに区切り文字「/」を与えて、サブカテゴリを再現します。

<mt:loop name="list">
<mt:SetVar name="end_tag" value="</ul></li>" append="1" />
<ul><li><mt:GetVar name="__value__" />
  <mt:if name="__last__">
 
    <mt:GetVar name="label" glue="/" setvar="category" />
    <mt:Entries category="$category">
    <mt:EntriesHeader>
  <ul>
    </mt:EntriesHeader>
  <li><a href="<mt:EntryPermalink>"><mt:EntryTitle /></a></li>
    <mt:EntriesFooter>
  </ul>
    </mt:EntriesFooter>
    </mt:Entries>
    <mt:GetVar name="end_tag" />
  </mt:if>
</mt:loop>

MT4.xの場合、categoryモディファイアにサブカテゴリを設定できるのは比較的新しいバージョンだけだったと記憶してますので注意してください。MT5では正常に動作します。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)