アドアチーブ株式会社

アドアチーブ株式会社 オフィシャルブログ

2007.03.08ライブドアBlogからMT3.3へ移管する時のカレンダー問題

今日は第二弾。カレンダーです。

デフォルトでMT3.3はLDのような月めくりカレンダーを作ることは難しいです。
というか多分無理です。
何でかといいますと、TOPページとか、カテゴリアーカイブのページ内で以下のタグが使えないからです。

  • <MTCalendar month="this"> 今月のカレンダーを表示するコンテナ
  • <MTArchiveNext> 来月のコンテナ(月別アーカイブの場合です)
  • <MTArchivePrevious> 先月のコンテナ(月別アーカイブの場合です)
  • <$MTArchiveDate$> 本日のタグ

こいつらが使えないと月めくりカレンダーは作れません。
でもこいつらをウィジェットに書いたら、月別、日別アーカイブでは良いのですが、
TOP、カテゴリアーカイブではモジュールごとはじかれてしまいます。

TOPページ内で表示させる方法は2つあります。

  1. iframeで何とかする。というもの。
    分かり易い参考サイトはこちらです。→小粋空間
  2. プラグインを入れてMTの中でPealを実行させる。というもの。
    参考になるサイトはこちらです。→nlog(n)

前者の方はだいぶわかりやすいと思いますが、
僕は後者のほうで行きました。

まずカレンダーモジュールを複製します。
そしてウィジェットも複製します。
(この時点で既にスマートではないですね… 照れる

月別、日別アーカイブ用にカレンダー用タグを使ったモジュールを書きます。
こんな感じです。

<MTArchivePrevious archive_type="Monthly">
<a href="<$MTArchiveLink$>">&lt;&lt;</a>
</MTArchivePrevious>
<$MTArchiveDate format="%B %Y"$>
<MTArchiveNext archive_type="Monthly">
<a href="<$MTArchiveLink$>">&gt;&gt;</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"$>/">&lt;&lt;</a>
<$MTDate format="%Y年 %m月"$>
<a href="<$MTBlogURL$><$MTDate format="%Y"$>/<$MTDate format="%m"$>/">&gt;&gt;</a>

出来たモジュールをウィジェットに入れて、TOP、カテゴリアーカイブに入れます。

かなり強引な手ではありますが、 LDの月めくりカレンダーとほぼ同じ動作をします。あとは小まめにタグを打ち変えていけばOK 悲しい 面倒ですが。

この記事へのトラックバック

トラックバックURL:  http://www.adachieve.com/~mt/mt334/mt-tb.cgi/816


この記事へのコメント


名前:
E-mail:
URL:
  情報を記憶: