2010.03.04

「年別アーカイブのときに月ごとに区切って表示する」方法【備忘録】

AUTHOR

本日、デュアルディスプレイデビューしました。おはぎです。

Mさんありがとうございました!

さて、今回もMTネタで。

「年別アーカイブのときに月ごとに区切って表示する」方法です。

参照元:エントリーの一覧表示で、月毎に見出しをつけたい

<MTEntries limit="auto">
<MTEntriesHeader>
<!-- thismonthに最新のエントリーの投稿月をセットします -->
<MTSetVarBlock name="thismonth"><$MTEntryDate format="%m"$></MTSetVarBlock>

<!-- 最初の見出し -->
<h2><$MTGetVar name="thismonth"$>月</h2>
</MTEntriesHeader>

<!-- entrymonthにエントリーの投稿月をセットします -->
<MTSetVar Block name="entrymonth"><$MTEntryDate format="%m"$></MTSetVarBlock>

<!-- thismonthとentrymonthの中身を比べます。同じであれば月見出しを出さず、記事一覧を出します。 -->
<MTIf name="thismonth" eq="$entrymonth">
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
<MTElse>

<!-- 月が変わった時の見出し -->
<h2><MTGetVar name="entrymonth">月</h2>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
<!-- thismonthに新しい月をセットします -->
<MTSetVarBlock name="thismonth"><$MTEntryDate format="%m"$></MTSetVarBlock></MTIf>
</MTEntries>

こちらを応用して<$MTEntryDate$>の個所を、自分で設定した日付のカスタムフィールドに置き換えることもできます。

これには、sort_by属性(並び替えのキーを設定)でカスタムフィールドの値を設定することで実装できます。
前述のソースの1行目を以下のように変えます。

<MTEntries sort_by="field:scheduleday" sort_order="ascend">

「scheduleday」はカスタムフィールド作成時に付けた「ベースネーム」の値です(好きにつける)。
「sort_order」は新しい順(降順:descend)か古い順(昇順:ascend)かを決める属性です。
そして、<$MTEntryDate format=”%m”$>とある個所を

<$MTScheduleDay format="%m"$>

と変えます。
「MTScheduleDay」はカスタムフィールド作成時に付けた「テンプレートタグ」の値です(好きにつける)。

↓こんな画面。

これで、エントリー順が前後してもカスタムフィールドに入力した日付で並び変えることができます。
ですので、予定表などのページを作る際に便利ですね。

戸田@ドアズ社長ブログ

  • No items
PAGE TOP