October 8, 2008 10:26 PM
月別アーカイブを年別にソート(1) ArchiveDateHeader/Footerプラグイン
Category:Movable Type > Movable Type 4.2
Tags:customize Movable Type plugin

Movable Typeに標準で用意されているウィジェットで、月別アーカイブをリスト表示するものは2つあります。標準の「月別アーカイブ」ウィジェットと、「月別アーカイブ(ドロップダウン)」ウィジェットです。
こんな言い方をした人がいました。
「Weblogにおける月別アーカイブのリスト、あれはそのWeblogの年輪であり、皺なんだよ。Webにおける信用を担保する。だからどんなWeblogでもそれを表示させることをやめやしない、たとえそれをクリックする人が少なかろうとね。」
何はともあれ素敵な歳のとり方をしたいものですね。
今回はそんな月別アーカイブのリストの表示のさせ方をカスタマイズしました。ArchiveDateHeader、ArchiveDateFooter、2つのプラグインが必要です。
その目的は、月別アーカイブのリストの出力の仕方の拡張と、適切なマークアップの実現です。
プラグインのダウンロードは以下のページからできます。
Archive Date Header Plugin :: Adam Kalsey
小粋空間: ArchiveDateFooter プラグイン
MT4以降のバージョンを利用している場合、前者の「ArchiveDateHeader」プラグインには記述を加えてやる必要があるそうです。小粋空間で指摘されていました。加える記述はこちらです。
use MT::Plugin;
my $plugin = MT::Plugin->new({ name => 'MTArchiveDateHeader' });
MT->add_plugin($plugin);
こちらの記述は、ArchiveDateHeader.plの15行目と17行目の間に挿入してやり、
MT::Template::Context->add_container_tag(ArchiveDateHeader => &ArchiveDateHeader);
use MT::Plugin;
my $plugin = MT::Plugin->new({ name => 'MTArchiveDateHeader' });
MT->add_plugin($plugin);
sub ArchiveDateHeader {
結果としてこのようになればOKです(参考ページ:小粋空間)
さて、ここからは実際に導入して見ます。プラグインのファイルはいつも通り、単体でpluginディレクトリにアップロードしてやればインストールは完了です。そしてテンプレートを編集します。新しく作成したウィジェットのテンプレートには以下のように記述しました。
<ul>
<MTArchiveList archive_type="Monthly" sort_order="ascend">
<MTArchiveDateHeader>
<li><$MTArchiveDate format="%Y"$>
<ul>
</MTArchiveDateHeader>
<li><a href="<$MTArchiveLink$>"><$MTArchiveDate format="%B"$>月</a></li>
<MTArchiveDateFooter sort_order="ascend">
</ul>
</li>
</MTArchiveDateFooter>
</MTArchiveList>
</ul>
そして出力されたHTMLソースがこちら
<ul>
<li>2006
<ul>
<li><a href="http://tadateto.net/2006/10/">10月</a></li>
<li><a href="http://tadateto.net/2006/11/">11月</a></li>
<li><a href="http://tadateto.net/2006/12/">12月</a></li>
</ul>
</li>
<li>2007
<ul>
<li><a href="http://tadateto.net/2007/01/">1月</a></li>
<li><a href="http://tadateto.net/2007/02/">2月</a></li>
<!--中略-->
<li><a href="http://tadateto.net/2008/08/">8月</a></li>
<li><a href="http://tadateto.net/2008/09/">9月</a></li>
<li><a href="http://tadateto.net/2008/10/">10月</a></li>
</ul>
</li>
</ul>
記述方法についてはSCREAMO CREATIVEの年別を月別アーカイブをリスト化 for Movable Typeの記事を大いに参考にしました。
月別アーカイブのリストをカスタマイズする際には、Movable Type 4 ドキュメントの日付に関するテンプレートタグのモディファイアリファレンスのページもブックマークしておくと便利です。このカスタマイズを経て月別アーカイブリストの表示はエントリー冒頭のキャプチャ画像のように改められました。
さてエントリーのタイトルに(1)と銘打ってあるのは続きがあるからで・・実はこの2つのプラグインを利用したカスタマイズでは、問題点がありました。端的に言うと、エントリー冒頭の画像を見ていただくとわかるのですが、月別アーカイブを昇順にしようとすると、年別アーカイブも昇順にせざるを得ないというものです。
Webにおける記述では、最新のものほど上に来るというのが、個人的には自然と思います。次回「月別アーカイブを年別にソート(2)」ではその問題点を解決する方法を紹介します。

Leave Your Words