メインインデックスの月別アーカイブへのリンク表示を nDialy 風にする。
ブログを長く続けると,月別アーカイブが増えてくる。それと同時にアーカイブへのリンクの行数も増えていく。ブログを始めたばかりの頃は1か月にいくつ投稿したかが励みになったが,最近はどうでもよくなってきた。年間の投稿数くらいはあってもいいかな,くらいな感じである。そこで,月別アーカイブへのリンクを圧縮して表示することを考える。
もともとのコードは次の通り。
とても単純である。しかし,出力結果は若干冗長である。簡潔な表示方法としては,nDiary の表示がある。この表示をマネるのがよさそうだ。お手本は Junkline - MT の過去ログリンク表示を nDiary (ごにょり済み)風に で,さらに手を加えて月の順序を 01, 02, 03,... の順序にする。
使用するプラグインは,年をまとめるために Archive Date Header Plugin :: Adam Kalsey,月を昇順にするために Brad Choate: PerlScript Plugin を使う。動作確認は Movable Type 2.661 で行った。
メインインデックスのテンプレートに書くコードは次の通り。
再構築すると,次のような表示になる。
2006: 01 02 03 04 05 06
2005: 01 02 03 04 05 06 07 08 09 10 11 12
2004: 01 02 03 04 05 06 07 08 09 10 11 12
注意が必要なのは,年の最後の処理である。月を逆順に並べ替える配列をクリアし,改行 <br /> を挿入する必要があるのは次の2つの場合がある。
この動作は,意味合い的にはMTArchiveDateFooter にあたるタグで行いたいのだが,Archive Date Header Plugin では提供されていない。そこで,MTArchiveDateFooter は MTPerlScript の力を借りて実装する。このアイデアについては,Archive Date Header Plugin :: Adam Kalsey のコメント欄にあるのを ぬりかべブログ :: ArchiveDateHeader Plugin の応用 さんが解説してくれている。
MTArchiveList には sort_order 属性を指定することができない。必ず降順になってしまう。月を昇順に並べ替えるのに,ここでは MTPerlScript プラグインを使ったが,PHP が使えるのであれば PHP スクリプトでもできるようだ(Chitatopops: Movable Type: 月ごとのアーカイブのリストを登り順に,まけないこと投げ: MTArchiveListで昇順ソートを使う)。
2006年6月27日追記:
投稿のない月も表示する方法もあります(nlog(n): 月別アーカイブへのリンクをもっと nDialy 風に)。
Master Archive Index
Total Entry Count: 1957