月別アーカイブを年別の開閉プルダウンで。
時代は進んでいますね。jqueryというAjaxプログラムは滑らかな動きをします。
参照:MT 月別アーカイブリスト プルダウン式のテンプレート
元ネタ:月別アーカイブリストの年別表示(ツリー化+折りたたみ)
おまけ:開閉式メニュー
※画像のプラスマイナスを使いたくて、こっちで全面的に作り直した...
参照からaccordion.jsダウンロード&自分のサーバーにアップロード
ソース
ヘッダー内<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="js/accordion.js"></script>
月別アーカイブ表示箇所
<mt:IfArchiveTypeEnabled archive_type="Monthly">
<mt:ArchiveList archive_type="Monthly">
<mt:ArchiveListHeader>
<dl class="archives">
<dt><mt:archiveDate format="%Y年" /></dt>
<dd><ul>
<mt:archiveDate format="%Y年" setvar="year" />
<mt:setVarBlock name="monthly_fold_script">
FoldNavigation('archive<mt:archiveDate format="%Y" />','off',false);
</mt:setVarBlock>
</mt:ArchiveListHeader>
<mt:archiveDate format="%Y年" setvar="current_year" />
<mt:if name="current_year" ne="$year">
<li><mt:getVar name="month_title" /></li>
</ul></dd>
<dt><mt:getVar name="current_year" /></dt>
<dd><ul>
<mt:setVarBlock name="monthly_fold_script" prepend="1">
FoldNavigation('archive<mt:archiveDate format="%Y" />','off');
</mt:setVarBlock>
<mt:else>
<mt:unless name="__first__">
<li><mt:getVar name="month_title" /></li>
</mt:unless>
</mt:if>
<mt:getVar name="current_year" setvar="year" />
<mt:setVarBlock name="month_title">
<a href="<mt:archiveLink />"><mt:archiveTitle regex_replace="/\d+年/""","" /></a> [<mt:archiveCount />]
</mt:setVarBlock>
<mt:ArchiveListFooter>
<li><mt:getVar name="month_title" /></li>
</ul></dd>
</mt:ArchiveListFooter>
</mt:ArchiveList>
</dl>
<script type="text/javascript">
//<![CDATA[
<mt:getVar name="monthly_fold_script" />
//]]>
</script>
</mt:IfArchiveTypeEnabled>
css
.archives,.archives dt,.archives dd,.archives ul { margin:0; padding:0; }以上です。
.archives li { list-style-type: none; }
.archives { padding: 0; }
.archives dt { padding: 0; }
.archives dd { padding: 0 0 5px 10px; }
■余談
mt:archiveTitle regex_replace="/\d+年/","" の
「年」は文字コードで「年」になります。
意味は2009年5月から2009年を抜くよってphpの命令です。
参照の方はソースが年になっていて、これだとmtで動かないかも...
ちなみにmtArchivedate format="%m月"だと0がつきます。
むかしゼロサプレスするのに苦労したんですが、これはいいですね。