以前にエントリ一覧で新着アイコンを表示する方法を紹介しました。今回のエントリでは、サブカテゴリを含むカテゴリ一覧で、各カテゴリ毎に新着記事があるかアイコン表示をするためのテンプレートの書き方を紹介します。
まず、最初のステップとして、ブログ内のカテゴリとサブカテゴリをツリー表示することを考えます。例えば、インデックステンプレートに以下のテンプレートタグを記述します。これで unsorted list による全てのカテゴリの一覧がツリーで生成されます。
<ul><MTSubCategories top="1"> <li><$MTCategoryLabel$> <MTHasSubCategories><ul> <$MTSubCatsRecurse$> </ul></MTHasSubCategories> </li> </MTSubCategories></ul>
次にそれぞれのカテゴリ毎に、そのカテゴリに投稿された最新の記事の日付を表示することを考えます。MTEntries
で lastn="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 ) { ?><?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>