COREBlog のカレンダー部分を Ajax 化
サイドバーのカレンダー部分を Ajax 化しました。月を表示しているところの左右の <- や -> をクリックすると、カレンダー部分だけが切り替わります。これで実用上見る人に取って便利かどうかというとアレなんですが。
実際にやったこと。
- modules/calendar を編集
1. 変数 move のチェックとそれに伴う div の出力の制御
最初の
<dtml-unless> .... </dtml-unless>
の後に
<dtml-unless move>
<div id="calendar">
</dtml-unless>
<script type="text/javascript" src="<dtml-var blogurl>/modules/calendar.js"></script>
を挿入。
2. タイトル部分の変更
<div class="sideboxtitle"><dtml-var "getMonthName(calendar_month)"> <dtml-var calendar_year></div>
を単に calendar と表示するだけの
<div class="sideboxtitle">calendar</div>
と変更。
3. 月移動用のリンクを作成
<div align="center" class="calendar">
<div align="center">
を
<div align="center" class="calendar">
<table width="100%">
<tr>
<td width="10%" align="right">
<a href="javascript:go_prev(<dtml-var calendar_year>,<dtml-var calendar_month>);"><-</a>
</td>
<td width="80%" align="center">
<a href="<dtml-var blogurl>/monthlist_html?year=<dtml-var calendar_year>&month=<dtml-var calendar_month>"><dtml-var "getMonthName(calendar_month)"> <dtml-var calendar_year></a>
</td>
<td width="10%" align="left">
<a href="javascript:go_next(<dtml-var calendar_year>,<dtml-var calendar_month>);">-></a>
</td>
</tr>
</table>
<div align="center">
に変更。
4. 変数 move のチェックとそれに伴う /div の出力の制御
最後に
<dtml-unless move>
</div>
</dtml-unless>
を追加。
- modules に calendar.js というDTMLドキュメントを追加
内容はcalendar.jsを見れば大体わかるかと思いますが、 set_calendar() 関数の変数 path は
var path = "<dtml-var blogurl>/modules/calendar?calendar_year="+y+"&calendar_month="+m+"&move=1";
としています。