今回もMTのデバッグネタです。
先日、弊社のプラグインをインストールしたところうまく動かない、というお客様がいらっしゃいました。手元の環境では問題なく動作していますが、お客様の管理画面にアクセスして調べてみると、やはりうまく動作してません。サーバのシェルにアクセスして調べようにも、お客様が契約されたレンタルサーバでは、シェルでのアクセスが出来ない環境でした。
こういう状況で使えるのが "PerlScript プラグイン":http://bradchoate.com/weblog/2002/07/27/mtperlscript です。このプラグインは、テンプレート内にPerlのスクリプトを記述できるようにするもので、再構築時にスクリプトを実行し、その結果を出力します。
プラグインには2つスクリプトが同梱されていて、それぞれ指定された場所へインストールするようドキュメントに書かれていますが、私は以下のようにファイルを配置し、プラグインディレクトリへコピーしました。
==
PerlScript
|-- lib
| `-- bradchoate
| `-- perlscript.pm
`-- perlscript.pl
==
使い方は、テンプレートにPerlスクリプトを記述し、MTPerlScriptタグで囲うだけです。
例として、MTのコンフィグをダンプするスクリプトを書くと以下のようになります。
==
<MTPerlScript>
require MT;
require YAML;
print YAML::Dump(MT::config);
</MTPerlScript>
==
1つのテンプレートの中にMTPerlScriptタグをいくつも置くこともできます。
==
<MTPerlScript>
print "begining of template";
</MTPerlScript>
<MTPerlScript>
print "end of template";
</MTPerlScript>
==
サブルーチンを定義することも出来ます。
==
<MTPerlScript package="mylib" once="1">
sub log {
my ($str) = @_;
print "<p>log: $str</p>\n";
}
</MTPerlScript>
<MTPerlScript>
mylib::log("middle of template");
</MTPerlScript>
==
作成したテンプレートを再構築し、出力内容を確認するという手順を繰返して、デバッグします。
かなり便利かつ強力なプラグインですが、その反面、テンプレートの編集権限さえあれば、何でも出来てしまう危険なプラグインでもありますので、取り扱いにはご注意ください。