気づいたかもしれないが、右のカレンダーでは土日祝日は違う色になっている。コンテナタグ MTCalendarIfSaturday、MTCalendarIfSunday、MTCalendarIfHoliday を追加して利用しているからだ。
プラグインとしてつくるのは結構めんどくさいので、直接 Context モジュールに追加することにした。
Context モジュールはここにある。先頭のmtはMTのメインディレクトリ。インストールの仕方によって場所が違うので、ご自分の環境にあわせること。
1 |
<mt>/lib/MT/Template/Context.pm |
編集するまえに、念のため、バックアップを取っておこう。
1 2 |
# cp Context.pm Context.pm.orig # vi Context.pm |
214行に以下の3行を追加。
1 2 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), のつぎ) に、以下を追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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'), |
カレンダーのところで、コンテナタグ
1 2 3 |
<MTCalendarIfHoliday><font color="red"></MTCalendarIfHoliday> 日付等 <MTCalendarIfHoliday></font></MTCalendarIfHoliday> |
のように使えばよい。つまり、カレンダーの各日付を、祝日の場合にのみ、フォントタグで囲むようにする。フォントの色を、祝日では赤。祝日でない日には、コンテナタグなので、フォントタグが消える。
なお、祝日は今年2004の分しか書いてないので、来年以降については追加して下さい。