- 2007.11.05 Mon 22:39
- | Categories: PC
- | Tags: Movable Type, さくら, サーバ
メインページで月が変わったときにその月のエントリがない場合、年月、前月へのリンク、日付の整合性が取れず変なことになっていた。直さないと。
どうせなら月のアーカイブへ移動するドロップダウンリストを月表示のところに組み込んでしまおう、と思い試行錯誤すること数日。
なかなか思った通りに動作してくれなくて大変だった。
自分のやりたいことは、今日を含んだ月を表示するのではなく、最新のエントリがある月を表示して欲しかった。
今まで使っていたカレンダーでは、
- 年月はブログを再構築した日付を表示
- 前月・次月へのリンクは <MTArchivePrevious>、<MTArchiveNext> を使用
- 日付は <MTCalendar>
を使用していた。
これを変更。
年月の部分は月別アーカイブへのリンクを組み込んだ上で、最新のエントリの日付を追加してselectedにした。こんな感じ。
<MTEntries lastn="1">
<option value="<$MTBlogURL$><$MTEntryDate format="%Y"$>/<$MTEntryDate format="%m"$>/" selected><$MTEntryDate format="%B %Y"$></option>
</MTEntries>
前月・次月へのリンクは変更なし。
日付の部分は <MTCalendar month="<$MTArchiveDate format="%Y%m"$>"> で最新エントリを含む月を直接指定したかったが動かない。
試しに <MTCalendar month="this"> に変更したら動いた。
MTタグリファレンスを見るとメインページには month="this" が使えないって書いてあるが、こうしないと最新のエントリを含む月の日付を表示してくれない。
なんか無理矢理やった感じなのでちゃんと動作するか不安。
将来のバージョンアップの際に問題を起こすかも・・・
あと、月別アーカイブ等に使用するカレンダーをPHP化した。
アーカイブマッピングの月別アーカイブのところで %y/%m/calendar.php というファイル名でカレンダーを別途作成し、読み込むように変更した。