気づいたかもしれないが、右のカレンダーでは土日祝日は違う色になっている。コンテナタグ MTCalendarIfSaturday、MTCalendarIfSunday、MTCalendarIfHoliday を追加して利用しているからだ。

プラグインとしてつくるのは結構めんどくさいので、直接 Context モジュールに追加することにした。

Context モジュールはここにある。先頭のmtはMTのメインディレクトリ。インストールの仕方によって場所が違うので、ご自分の環境にあわせること。

 <mt>/lib/MT/Template/Context.pm

編集するまえに、念のため、バックアップを取っておこう。

# cp Context.pm Context.pm.orig
# vi Context.pm

214行に以下の3行を追加。

$ctx->register_handler(CalendarIfSaturday => [ \&_hdlr_pass_tokens, 1 ]);
$ctx->register_handler(CalendarIfSunday => [ \&_hdlr_pass_tokens, 1 ]);
$ctx->register_handler(CalendarIfHoliday => [ \&_hdlr_pass_tokens, 1 ]);

さらに2103行 (CalendarIfToday => ($today eq $this_day), のつぎ) に、以下を追加。

CalendarIfSaturday => $day % 7 == 0,
CalendarIfSunday => ($day-1) % 7 == 0,
CalendarIfHoliday => (
$this_day eq '20040101' or
$this_day eq '20040112' or
$this_day eq '20040211' or
$this_day eq '20040320' or
$this_day eq '20040429' or
$this_day eq '20040503' or
$this_day eq '20040504' or
$this_day eq '20040505' or
$this_day eq '20040719' or
$this_day eq '20040920' or
$this_day eq '20040923' or
$this_day eq '20041011' or
$this_day eq '20041103' or
$this_day eq '20041123' or
$this_day eq '20041223'),

カレンダーのところで、コンテナタグ

<MTCalendarIfHoliday><font color="red"></MTCalendarIfHoliday>
日付等
<MTCalendarIfHoliday></font></MTCalendarIfHoliday>

のように使えばよい。つまり、カレンダーの各日付を、祝日の場合にのみ、フォントタグで囲むようにする。フォントの色を、祝日では赤。祝日でない日には、コンテナタグなので、フォントタグが消える。

なお、祝日は今年2004の分しか書いてないので、来年以降については追加して下さい。

Comments are closed.

Post Navigation