カテゴリ一覧でカテゴリ毎に新着記事があるかアイコン表示する

Posted by
ぴろり
Posted at
2008/10/11 17:20
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ

 以前にエントリ一覧で新着アイコンを表示する方法を紹介しました。今回のエントリでは、サブカテゴリを含むカテゴリ一覧で、各カテゴリ毎に新着記事があるかアイコン表示をするためのテンプレートの書き方を紹介します。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

全てのカテゴリをツリー表示する

 まず、最初のステップとして、ブログ内のカテゴリとサブカテゴリをツリー表示することを考えます。例えば、インデックステンプレートに以下のテンプレートタグを記述します。これで unsorted list による全てのカテゴリの一覧がツリーで生成されます。

<ul><MTSubCategories top="1">
  <li><$MTCategoryLabel$>
<MTHasSubCategories><ul>
  <$MTSubCatsRecurse$>
</ul></MTHasSubCategories>
  </li>
</MTSubCategories></ul>

カテゴリ毎に最新のエントリ一つの投稿された日時を表示する

 次にそれぞれのカテゴリ毎に、そのカテゴリに投稿された最新の記事の日付を表示することを考えます。MTEntrieslastn="1" を指定することで、最新の記事を一件だけ取得しています。

<ul><MTSubCategories top="1">
  <li><$MTCategoryLabel$>
<MTEntries lastn="1">(<$MTEntryDate$>)</MTEntries>
<MTHasSubCategories><ul>
  <$MTSubCatsRecurse$>
</ul></MTHasSubCategories>
  </li>
</MTSubCategories></ul>

アイコンを表示する

 最後に、前回のエントリの同様に、エントリの投稿された日付からアイコンを表示するための PHP コードを追加します。

<?php
// New/Hotアイコン
function iconNew( $szItemDate )
{
	$nDivNew = 3 * 24 * 60 * 60; // "NEW"

	$jst = 9 * 60 * 60; // 日本の時差
	$div = time() - strtotime( $szItemDate ) + $jst;
	if( $div < $nDivNew ) { ?>
 NEW
<?php }
} ?>

<ul><MTSubCategories top="1">
  <li><$MTCategoryLabel$>
<MTEntries lastn="1"><?php iconNew( "<$MTEntryDate format="%Y-%m-%d %H:%M:%SZ"$>" ); ?></MTEntries>
<MTHasSubCategories><ul>
  <$MTSubCatsRecurse$>
</ul></MTHasSubCategories>
  </li>
</MTSubCategories></ul>
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。