月ごとのアーカイブにもカレンダーを表示して、月の移動をしたいと思った。それでなければかカレンダーとしてちょっと意味がない。

「日付アーカイブ」のカスタマイズを行った。左右の2列表示にするのは、メインページを参考に、<div id=”center”> </div>でメインのコンテンツ部分を囲み、<div id=”right”>…</div>の中のカレンダー部分だけを残してコピーをする。
これで、カレンダーは右側に表示されたのだがカレンダーはどの月のアーカイブを見ても最新の2004年12月で表示されてしまった。

11月のアーカイブ表示時は2004年11月と表示したいので、もう少しいじってみる。

ヘルプによれば、指定年月のカレンダーを表示するには<MTCalendar month=”yyyymm”>….</MTCalendar$>のように、年月をパラメータで渡せばいいということだったので、REQUEST_URI から年月を読み込んでパラメーターを渡してみる。
アーカイブのURLは自分の場合、/archives/yyyy/mm/index.php として呼び出されるので、
<?php
$arys = explode(”/”, $_SERVER[”REQUEST_URI”]);
$year = $arys[count($arys) - 3];
$month = $arys[count($arys) -2];
?>
のようにはじめに、PHPで年月を取得しておき
<MTCalendar month=”<?= $year.$month ?>”>としてみたのだが、、、
年月は変わらない上に、”&gt が連続して出てきてしまった。
PHPで読み込んだ値自体は間違いなかったのだが、テンプレートの構築の時に年月が渡されないと意味がないのでしょうね。
いろいろ調べたところ、<MTCalendar month=”this”>とすればよかった。

これでカレンダーの中身は表示されるのだが、caption で指定している年月の表示がまだかわらない。11月のカレーンダーを表示しているのに、2004年12月とか表示している。マヌケなので修正。
<$MTDate format=”%B %Y”$> となっているところを、<$MTArchiveDate format=”%B %Y”$>に変えることでうまくいった。

あとはカレンダーに月の移動を組み込めば完了だ。
前の月への移動
<MTArchivePrevious>
<a href=”<$MTArchiveLink$>”>«</a>
</MTArchivePrevious>

次の月への移動
<MTArchiveNext>
<a href=”<$MTArchiveLink$>”>»</a>
</MTArchiveNext>

を、<caption><$MTArchiveDate format=”%B %Y”$></caption> の MTArchiveDateの前後にそれぞれ入れる。

これで、カレンダーが少しはましになた。

メインインデックスに表示する方法は現在調査中。。。