月別アーカイブを年別の開閉プルダウンで。

時代は進んでいますね。
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+&#24180;/""","" /></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+&#24180;/","" の
「&#24180;」は文字コードで「年」になります。
意味は2009年5月から2009年を抜くよってphpの命令です。
参照の方はソースが年になっていて、これだとmtで動かないかも...
ちなみにmtArchivedate format="%m月"だと0がつきます。
むかしゼロサプレスするのに苦労したんですが、これはいいですね。