MENU

MT_カレンダの月送り

060822
MovableType3.2からは標準でカレンダ表示をしなくなってしまった。
タグや表示するための機能は保持しているのだが、おそらくカレンダから日別のエントリを表示する場合
その日ごとのhtmlページを用意しなくてはならず、システム全体のレスポンスを気にしてのことだろう。
加えて別の見方をすれば、MT自体がCMS化の流れもあるらしく、ブログらしい外観のカレンダを非表示することでイメージを変えたい狙いもあると思うのだが。

私自身はカレンダ機能はよく使う。
別にその日を決め打ちしてページの表示をすることはあまりないのだが、カレンダの投稿日の変化で更新の頻度が一目で解るので重宝している。
自分の努力が目に見える形で表示されると頑張り甲斐があるというものである。
逆にさぼっているとその期間だけ色が塗られておらず少々寂しくなる。
毎日更新のモチベーション維持にもカレンダ表示はやはり必要だと思う。

でもMTの標準ではカレンダは当月のみの表示である。
先月以前の物をカレンダとして表示する場合、ちょっとした工夫が必要である。
小粋空間さんのところでそのやり方が解説されている。
そのままでだとちょっとデザイン的に馴染まないので、このサイト向けに少しコードをいじった。

<!– カレンダー開始 –>
<MTIfArchiveTypeEnabled archive_type=”Daily”>
<div class=”side”>
<div class=”calendar”>
<table summary=”投稿した日にリンクする月別のカレンダー”>
<div class=”sidetitle”>
<MTArchivePrevious><a href=”<$MTArchiveLink$>”>?</a> </MTArchivePrevious>
<$MTCalendarDate format=”%B %Y”$>
<MTArchiveNext> <a href=”<$MTArchiveLink$>”>?</a></MTArchiveNext>
</div>
<tr>
<th abbr=”Sunday”><span class=”calendar”><span class=”holiday”>Sun</span></span></th>
<th abbr=”Monday”><span class=”calendar”>Mon</span></th>
<th abbr=”Tuesday”><span class=”calendar”>Tue</span></th>
<th abbr=”Wednesday”><span class=”calendar”>Wed</span></th>
<th abbr=”Thursday”><span class=”calendar”>Thu</span></th>
<th abbr=”Friday”><span class=”calendar”>Fri</span></th>
<th abbr=”Saturday”><span class=”calendar”><span class=”saturday”>Sat</span></span></th>
</tr>

<MTCalendar month=”this”>
<MTCalendarWeekHeader><tr></MTCalendarWeekHeader>
<td><MTCalendarIfBlank><MTElse><span class=”calendar”></MTElse></MTCalendarIfBlank><MTCalendarIfEntries>
<MTEntries sort_order=”ascend”>
<MTDateHeader><a href=”<$MTEntryPermalink archive_type=”Daily”$>” title=”</MTDateHeader><$MTEntryTitle$><MTDateFooter>” target=”_top”><$MTCalendarDay$></a><MTElse> / </MTElse></MTDateFooter>
</MTEntries>
</MTCalendarIfEntries><MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries><MTCalendarIfBlank>
<MTElse></span></MTElse></MTCalendarIfBlank></td><MTCalendarWeekFooter></tr></MTCalendarWeekFooter></MTCalendar>
</table>
</div>
</div>
</MTIfArchiveTypeEnabled>
<!– カレンダー終了 –>

<script type=”text/javascript”>
<!–
data = new Date();
year = data.getYear();
year = (year < 2000) ? year + 1900 : year;
month = data.getMonth() + 1;
date = data.getDate();
table = document.getElementById(‘calendarTable’);
flag = 0;
summary = table.getAttribute(‘summary’);
text = year + ‘年’ + month + ‘月’;
if (summary.indexOf(text) != -1) {
elements = table.getElementsByTagName(‘span’);
for(k = 0; k < elements.length; k++) {
if (elements[k].childNodes){
if((elements[k].childNodes)[0].nodeName == ‘A’) {
if((elements[k].childNodes)[0].innerHTML == date) {
elements[k].parentNode.setAttribute(‘class’,’today’);
elements[k].parentNode.setAttribute(‘className’,’today’);
}
} else {
if (elements[k].innerHTML == date) {
elements[k].parentNode.setAttribute(‘class’,’today’);
elements[k].parentNode.setAttribute(‘className’,’today’);
}
}
}
}
}
//–>
</script>

ただし、月送りが出来るのは月別アーカイブのページのみで、indexページでは表示しない。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次