« Movable Type プラグイン作成入門(3) | メイン | Movable Type プラグイン作成入門(5) »
2005年03月07日
Movable Type プラグイン作成入門(4)
変数タグにパラメータを渡すのも易しい。例)<$MTRepeatStr$> --- 与えられた文字列を繰り返す。
package MT::Plugin::RepeatStr; use strict; use MT::Template::Context; MT::Template::Context->add_tag(RepeatStr=> \&repeat); sub repeat { my($ctx, $arg)=@_; my $str = $arg->{str} x $arg->{kaisuu}; $str; } 1;
package MT::Plugin::RepeatStr;
関数などの名前が衝突しないように package を指定。
MT::Template::Context->add_tag(RepeatStr=>\&repeat);
RepeatStr というタグがあると repeat という メソッドを呼びだすことを指定。
my($ctx, $arg)=@_;
呼び出されるメソッドには2つの引数が渡される。一つ目はMT::Template::Contextオブジェクト。 2つ目はパラメータのハッシュへのリファランス。
my $str = $arg->{str} x $arg->{kaisuu};
テンプレートの変数タグ内で str='xyz' kaisuu='99' と記述した場合、 $arg->{str} に xxx, $arg->{kaisuu} に 99 が入る。
"xyz" x 99 で xyz を 99 回繰り返した文字列が得られる。
$str;
呼び出されるメソッドは最後に結果の文字列を返せば良い。
ここで作ったプラグインを RepeatStr.pl という名で保存し、plugins ディレクトリにアップロードしておこう。 これでテンプレート内で <$RepeatStr str='-' kaisuu='50' $> と記述すれば - を 50 回繰り返した文字列が得られる。
例)<$MTPerlEval$> --- perl のコードを実行する。
package MT::Plugin::Eval; use strict; use MT::Template::Context; MT::Template::Context->add_tag(PerlEval=>\&perleval); sub repeat { my($ctx, $arg)=@_; eval($arg->{eval}); } 1;テンプレート内で <$MTPerlEval eval='12*12' $> と記述すると 144 が得られる。便利なようだが、どんな perl のコードでも実行してしまうので危険極まりないとも言える。(^^;
投稿者 augustus : 2005年03月07日 21:21
トラックバック
このエントリーのトラックバックURL:
http://www.augustus.to/cgi-bin/blog/mt-tb.cgi/71