2007.03.08ライブドアBlogからMT3.3へ移管する時のカレンダー問題
デフォルトでMT3.3はLDのような月めくりカレンダーを作ることは難しいです。
というか多分無理です。
何でかといいますと、TOPページとか、カテゴリアーカイブのページ内で以下のタグが使えないからです。
- <MTCalendar month="this"> 今月のカレンダーを表示するコンテナ
- <MTArchiveNext> 来月のコンテナ(月別アーカイブの場合です)
- <MTArchivePrevious> 先月のコンテナ(月別アーカイブの場合です)
- <$MTArchiveDate$> 本日のタグ
こいつらが使えないと月めくりカレンダーは作れません。
でもこいつらをウィジェットに書いたら、月別、日別アーカイブでは良いのですが、
TOP、カテゴリアーカイブではモジュールごとはじかれてしまいます。
TOPページ内で表示させる方法は2つあります。
前者の方はだいぶわかりやすいと思いますが、
僕は後者のほうで行きました。
まずカレンダーモジュールを複製します。
そしてウィジェットも複製します。
(この時点で既にスマートではないですね…
)
月別、日別アーカイブ用にカレンダー用タグを使ったモジュールを書きます。
こんな感じです。
<MTArchivePrevious archive_type="Monthly">
<a href="<$MTArchiveLink$>"><<</a>
</MTArchivePrevious>
<$MTArchiveDate format="%B %Y"$>
<MTArchiveNext archive_type="Monthly">
<a href="<$MTArchiveLink$>">>></a>
</MTArchiveNext>
…
<MTCalendar month="this">
このモジュールを入れたウィジェットを月別、日別のアーカイブに入れます。
もう一個、TOP、カテゴリアーカイブ用のモジュールを作る前に、
プラグインをインストールします。
で、モジュールをこんな感じで書きます。
<MTSetVar name="prev_m" value="0">
<MTSetVar name="prev_y" value="0">
<MTPerlScript>
$y = '<$MTDate format="%Y"$>';
$m = '<$MTDate format="%b"$>';
$m--;
if($m == 0){$m=12;$y--;}
if($m == 13){$m=1;$y++;}
$m = sprintf("%02d",$m);
$ctx->{__stash}{vars}{prev_m}=$m;
$ctx->{__stash}{vars}{prev_y}=$y;
</MTPerlScript>
<a href="<$MTBlogURL$><$MTGetVar name="prev_y"$>/<$MTGetVar name="prev_m"$>/"><<</a>
<$MTDate format="%Y年 %m月"$>
<a href="<$MTBlogURL$><$MTDate format="%Y"$>/<$MTDate format="%m"$>/">>></a>
出来たモジュールをウィジェットに入れて、TOP、カテゴリアーカイブに入れます。
かなり強引な手ではありますが、 LDの月めくりカレンダーとほぼ同じ動作をします。あとは小まめにタグを打ち変えていけばOK
面倒ですが。

