Movable Type 備忘録

 特定の親カテゴリに属するエントリのみ一覧表示

  • Jun222008
  • Vote:
    http://bizcaz.com/archives/2008/06/22-021611.php
  • Categories: Tips
  • Tags:
  • Social Bookmark

こんばんわ^^

ちょと私用により長野の方に行ってまして、メルやコメントの返信が遅くなってすいませんでした (; ̄∇ ̄A
気づいたときに携帯からコメントの投稿許可したり、メルの返信はしてたのですが、なかなか時間がとれなくって。

さて、今回は以前ご紹介したカテゴリと最近のエントリ一覧をいっしょに表示の応用をやってみます。

どんかなんじで表示するかというと、以下のような表示のしかたになります。

カンタンに説明すると、ブログ記事アーカイブ、またはカテゴリアーカイブにおいて、エントリが属するカテゴリの親カテゴリ、またはカテゴリが属する親カテゴリのみエントリ一覧を表示するといったものです。

たとえば、このエントリが属するカテゴリは「Tips( 小技 )」です。
その親カテゴリは「MovableType( ムーバブルタイプ )」でして、親カテゴリ配下のカテゴリのみエントリ 3 件分を一覧表示させるといったものです。

これはMovable Type フォーラムのトピックでアドバイスした内容です。

カスタマイズ

具体的には以下のようなタグになります。

特定の親カテゴリに属するエントリのみ一覧表示

  1. <$MTArchiveType setvar="arctype"$>
  2. <mt:If name="arctype" eq="Individual">
  3.   <MTEntryCategories>
  4.     <MTParentCategory><$MTCategoryLabel decode_html="1" remove_html="1" setvar="catdisp"$></MTParentCategory>
  5.   </MTEntryCategories>
  6. <mt:ElseIf eq="Category">
  7.   <MTParentCategory><$MTCategoryLabel decode_html="1" remove_html="1" setvar="catdisp"$></MTParentCategory>
  8.   <mt:Unless name="catdisp"><$MTCategoryLabel decode_html="1" remove_html="1"$></mt:Unless>
  9. </mt:If>
  10.  
  11. <MTTopLevelCategories>
  12.   <MTSubCatIsFirst><ul class="catlist"></MTSubCatIsFirst>
  13.   <MTParentCategory><$MTCategoryLabel decode_html="1" remove_html="1" setvar="parcat"$></MTParentCategory>
  14.  
  15.   <mt:IfNonZero tag="MTCategoryCount">
  16.       <li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$MTCategoryLabel decode_html="1" remove_html="1"$></a> [<$MTCategoryCount$>]
  17.  
  18.       <mt:If name="catdisp" eq="$parcat">
  19.           <MTEntries lastn="3">
  20.               <MTEntriesHeader><ul class="entlist"></MTEntriesHeader>
  21.               <li><a href="<$MTEntryPermalink$>" title="<$MTEntryExcerpt convert_breaks="1" words="20"$>"><$MTEntryTitle$></a> <$MTEntryDate format="%Y/%m/%d"$></li>
  22.               <MTEntriesFooter></ul></MTEntriesFooter>
  23.           </MTEntries>
  24.       </mt:If>
  25.  
  26.       <$mt:SetVar name"parcat" value=""$>
  27.   <mt:Else>
  28.       <li><$MTCategoryLabel decode_html="1" remove_html="1"$> [<$MTCategoryCount$>]
  29.   </mt:IfNonZero>
  30.  
  31.   <$MTSubCatsRecurse max_depth="5"$>
  32.   </li>
  33.   <MTSubCatIsLast></ul></MTSubCatIsLast>
  34. </MTTopLevelCategories>
  1. まず、属する親カテゴリ名称を取得します。
    赤字の部分で親カテゴリ名称を取得してます。具体的には MTArchiveType ファンクションタグでアーカイブタイプをチェックして、ブログ記事アーカイブとカテゴリアーカイブとで取得の仕方を変更してます。

    それ以外のアーカイブ、およびインデックスの場合にはエントリは一覧表示されません。

  2. MTTopLevelCategories ブロックタグでカテゴリの一覧表示を行い、順次カテゴリ一覧を表示していきます。
    その際、青字の部分で事前に取得した親カテゴリ名称と、カレントのカテゴリが属する親カテゴリ名称を比較して、マッチした場合のみエントリを一覧表示してます。

以上です。
よかったら試してみてください (●>∀<●)/

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード