MovableTypeのカレンダーをカスタマイズ

12月 5, 2004 · Posted in MovableType 

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

「日付アーカイブ」のカスタマイズを行った。左右の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の前後にそれぞれ入れる。

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

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


Comments

3 Responses to “MovableTypeのカレンダーをカスタマイズ”

  1. お気楽極楽ブログ on 12月 30th, 2005 9時54分45秒

    カレンダーに月別アーカイブのリンクを

    MovableTypeで、月別アーカイブへのリンクは、通常のテンプレートを使用していると、毎月 少しずつ縦に伸びていって気持ちわるい。視認性も良くないので…

  2. mio on 8月 20th, 2008 18時30分07秒

    月別アーカイブのカレンダーに、表示中の月のカレンダーを表示するところで、
    悪戦苦闘していたところ、偶然このエントリーをみつけて参考にさせていただきました!
    かなり助かりました。ありがとうございました!!

  3. Hello! This is kind of off topic but I need some help from an established blog. Is it hard to set up your own blog? I’m not very techincal but I can figure things out pretty quick. I’m thinking about creating my own but I’m not sure where to begin. Do you have any ideas or suggestions? Many thanks

Leave a Reply