記事本文
Cut First Char は Movable Type 3.2-ja-2 では使えない ?
以前、 Movable Type のカテゴリ名の冒頭に通し番号を付け、実際の weblog 上で表示する部分についてはカテゴリ名をトリミングするという方法で、カテゴリの名前に関わらず任意の順番で並べるということが実現できると書きました。
このとき ( 2005 年 11 月 ) に紹介したプラグインは、 2005 年 7 月に一度試しに使っていただけで、紹介した時はプラグインの配布元へのリンクを書くだけで済ませていました。 今回、ちょっと新たなコンテンツを作ろうと思い立って、このプラグインを採用することにしたのですが、プラグインが正常に働きません。 2005 年 7 月に試した時と何が違うかって言ったら Movable Type のバージョンくらいしかありません。 当時は 3.171-ja で、現在は 3.2-ja-2 。
Cut First Char 0.02 ?
プラグインのソースを見比べてみると、実は The blog of H.Fujimoto:カテゴリを任意の順番に並べ替えるに現在置かれているソースと、ブログ自由自在 Movable Type 上級カスタマイズ術の 204 ページに書かれてあるソースは違うものになっています。
package MT::Plugin::CutFirstChar; use strict; use MT; use MT::Template::Context; use MT::Plugin; use MT::I18N; # show plugin information to main menu my $plugin = MT::Plugin->new; $plugin->name('Cut First Char 0.01'); $plugin->description('Cut first n char from string.'); $plugin->doc_link('http://www.my-mt.com/cutfirstchar.html'); MT->add_plugin($plugin); # add global filter MT::Template::Context->add_global_filter(cutfirstchar => \&cutfirstchar); # main sub cutfirstchar { my ($text, $arg, $ctx) = @_; $text = MT::I18N::substr_text($text, $arg, 0); $text; } 1;
書籍の方ではこのようなソースになっているのに対し、 The blog of H.Fujimoto:カテゴリを任意の順番に並べ替えるのソースでは次のようになっています。
package MT::Plugin::CutFirstChar; use strict; use MT; use MT::Template::Context; use MT::Plugin; my $plugin = MT::Plugin->new; $plugin->name("Cut First Char 0.01"); $plugin->description('Cut first n char from MTtag.'); MT->add_plugin($plugin); MT::Template::Context->add_global_filter(cutfirstchar => \&cutfirstchar); sub cutfirstchar { my ($text, $arg, $ctx) = @_; $text = substr $text, $arg; $text; } 1;
The blog of H.Fujimoto:「上級カスタマイズ術」掲載のcutfirstcharプラグインの不具合によると、 Movable Type 3.2 になって日本語処理のモジュール ( MT::I18N パッケージ ) が変わり、書籍掲載のものはそれに対応していないために、プラグインが正しく働かないようです。 よって、 The blog of H.Fujimoto:カテゴリを任意の順番に並べ替えるのソースでは日本語を考慮しないようにして対応しているとのこと。
最初はこれに気付かずに The blog of H.Fujimoto:カテゴリを任意の順番に並べ替えるのソースだけをずっと見ていたので、 1 時間くらいハマってしまいました。 バージョン 0.02 と書いてあったらそんなにハマらなかったのになあ ( 言い訳 ) 。

