MTCountdown プラグインにパッチをあてて,「何か月」の表示ができるようにする。
MTCountdown は,設定した日時まで,あるいは設定した日時から,の差の日時を表示する Movable Type 用のプラグインである (nlog(n): MTCountdown で生後何日を表示する)。1つ欠点があって,「年,週,日,時,分,秒」の表示はできるが「月」の表示ができない。先の記事で,個別記事の場合,記事の投稿日時と設定日時との差を表示する修正方法を紹介した。乗りかかった船なので,「月」の表示をできるようにするパッチを書いたので公開する。
動作確認は,MTOS 4.23-ja, MT 2.661 で行った。おそらく,これ以外のバージョンでも動作するだろう。
対象となる MTCountdown のバージョンは 0.4 である (David Raynes: MTCountdown Archives)。
作成したパッチは,countdown.pl.0.4.diff.txt。新たに必要となる Perl モジュールは Date::Calc である。このパッチには,先の記事で書いた修正も含まれているので,オリジナルの countdown.pl にあてること。
ここまで書き換えてしまうと,もはやパッチというレベルではないかもしれないが,作者の David Raynes さんに敬意を表してパッチとした。
パッチの中では Date::Calc のサンプルにある Normalize_Delta_YMD() のコードをそのまま使っている。これを使わずに Delta_YMD() をそのまま使うと,「11か月」が「1年-1か月」となったりすることがあって困ったからだ。パッチでは,「年,月,日」の計算に Date::Calc を使っている。このため「日」の精度も上がっている。
新たに使えるようになるタグは以下の通り。
個別記事テンプレートに挿入するサンプルは次の通り。MT4/MTOS であれば,<$mt:CountupMonths$> のような書き方をしてもよい。また,MT4/MTOS の場合は,新たにテンプレートモジュールを1つ作って,その中にこのコードだけを書き,「ブログ記事アーカイブテンプレート」から MTInclude するというのがスマートだろう。
再構築すると,次のようになる。
太郎 生後 1814 日 (4 歳 11 か月)
花子 生後 288 日 (0 歳 9 か月)
MTCountdown 等,他のタグのテストは行っていない。多分大丈夫だとは思うのだが…。
Posted by n at 2009-01-14 21:24 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957