二〇〇四年 一月 八日(

旧暦 十二月十七日 仏滅
癸未年 十二月十七日

MT 月の1桁表示

年が明けて、1月になりました。
MovableTypeを利用している人で、日付を「12月08日」を「12月8日」って感じに、上位桁の「ゼロ」は入れないという表示にしている人も、なかにはいるでしょう。
しかし、月が1月になって、「01月8日」としか表示できないことに気づいて愕然としていませんか?
早い話、ワタシがそーなのです・・・(^_^;)。

解決方法として、多分、いちばん簡単なのが、format="%b"を使う方法。
だけど、中には、Localeの関係上これが使えないって人もいるのではないでしょうか。(ほかで月名を英語表示にしたいような場合ね。)
それに、どうも上位一桁目に空白が入るようだし・・・。

で、以前製作した「和風日付表示プラグイン」を利用すればいいじゃないかってとこなんだけど、自分で作ったプラグインながら、これは少々書式がメンドくさい。

そんなら、もっと簡単に数字の上位桁にある「0」をとっぱらうフィルタを入れればいいじゃんってわけで、適当にでっちあげたのが以下のスクリプト。

package MT::Plugin::Nozero;

use MT::Template::Context;

MT::Template::Context->add_global_filter(nozero => sub {
my($str, $code, $ctx) = @_;
if($code eq '1'){
return $str * 1;
}
return $str;
});

1;

われながら、いい加減なフィルタ過ぎて、こうして書くのもかなり恥ずかしいわけだけど、まあ、いいか。

これはglobal filterなので、このスクリプトを/pluginsディレクトリに入れ、「nozero="1"」というオプションをつければいいというわけ。
入ってくる文字列が数字である場合しか想定していないので、数字以外のものを出力するタグに指定すると、何かエラーを起こすかもしれないが、それはまだ試してない・・・(^_^;)。


使い方は、たとえば、このサイトの一番下のほうに、最終リビルド時刻を入れているが、ここのタグの書式は、

Last Rebuild:<$MTDate format="%m" nozero="1"$>/<$MTDate format="%e %H:%M"$>
という具合になっている。

どーなんだろう。こういう細かいことを気にするのは、ワタシぐらいのもんなのかなぁ。

Posted by mura at 2004年1月 8日 17:19 | トラックバック
コメント

平田大治さんの『ウェブログ入門』の巻末の付録で知ったんですが……

MTArchiveDate format="%B" language="jp"

こういうふうにするんじゃダメなんですか?
うちではこれでやってます。

Posted by: jaga at 2004年1月18日 13:07

jagaさん、コメントありがとうございます。
正直言って、この記事書いたとき、languageアトリビュートについて完全に忘れておりました!
もちろん、そのほうが何百倍もスマートな解決方法です。いい加減なことを書いてすみませんでした。

言い訳は以下のとおりです(^_^;)。
上の例では書いてないんですけど、このフィルタを書く原案(このフィルタの前のバージョンとでも呼びましょうか)となったのは、どちらかというと月ではなく日の一桁表示の解決だったのです。format=%eでは日の数字が一桁の場合、数字の前に空白が一文字入ってしまうということがあって(つまり、12月8日ではなく、12月 8日となる)、それを解決したくてフィルタを作ったのです。そのときはlanguge=""の部分もさんざんいじり倒したんですが・・・。そのことについては今回すっかり忘れてました(^_^;)。(言語のことに言及しているくせに、すっかり忘れているのがモロバレです・・・。)

で、年が明けて月名についても同じような問題が起こることに気づいて、対処していなかったところに記事で書いたような対処をしたわけです。

ちなみに月に関しては一桁の場合も前に空白が入るということもなく、より一層このフィルタの必要性はありません。

Posted by: mura at 2004年1月19日 10:32
コメントする









名前、アドレスを登録しますか?






トラックバック
このエントリのトラックバックURL

http://www.villagewood.net/mt/mt-tb.cgi/61

◇このサイトのサーバの調子によって、トラックバックを送信してもエラーが表示されたり、すぐにこのページに反映できないときがあります。ですが、トラックバック自体は送られていますので、重ねて送っていただかなくても大丈夫です。こちらでも出来るだけ早く反映できるようにrebuildしますので、ご容赦ください。
参照元URL
関連エントリ