Movable Type のダイナミックパブリッシング対応プラグインを書いているとき,設定情報が取得できなくてハマッた。
昨日,拙作のプラグインをダイナミックパブリッシングに対応させてリリースしたのだが (nlog(n): 休日表示カレンダープラグイン 2.30),バグがなかなか取れずに悩みまくった。どこに嵌ったのかをメモしておく。
MTOS/MT4 のプラグインでは,ダイナミックパブリッシングのときでも,当然ではあるが,プラグインの設定を取得することができる。ブログ毎に行っている設定の取得は,細かいことを省いて要点だけを示せば,次のようになる。
これで,JCalendarColor のプラグイン設定画面で設定した holidaycolor の値が取得できるはず…だったのだが,これがなかなかうまくいかなかった。その原因は,スタティック用プラグインの Perl のソースにあった。これも要点だけ示す。
PHP の fetch_plugin_data('JCalendarColor', ...); の呼び出しで使っている 'JCalendarColor' の名前は,Perl でプラグインを new する際の「name」を参照する。上の Perl のコードでは「"$name $VERSION"」となってしまっているので,「JCalendorColor」ではなく「JCalendarColor 2.30」という name になってしまっていたのだ。プラグインの設定画面では,プラグイン名の後ろにバージョンがついたものが表示されるので,見た目はまったく同じになる。それでなかなか見つけられなかったのだ。さらに,スタティックパブリッシングでは,この名前は関係なく取得できてしまうので,ますます見つからなかった。
MTOS では,name と version は分けて書く。次のようにすれば上手くいく。
こんなコードを書いた,もともとの原因は,MT2 用プラグインをもとにバージョンアップしたことによる。MT2 では version を設定することができなかったため,name にバージョンを含めていたのである。
Posted by n at 2008-07-30 23:21 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957