2つ目の例。今度は <$MTHelloWorld world=”Linux”$> のように、タグの属性 world が使えるようにしたい。ただし、world属性を使わなければ1つ目と同じ出力結果、つまり上位互換、にする。

<プラグイン MTHelloWorld の修正>
 エディタを起動し、1つ目のプラグインファイル mt-hello.pl を以下のように修正する。

package MT::Plugin::HelloWorld;
use MT::Template::Context;
MT::Template::Context->add_tag(HelloWorld => \&hello_world);
sub hello_world {
    my $ctx = shift;
    my $args = shift;
    my $world = defined($args->{world}) ? $args->{world} : 'World';
    return "Hello $world.";
}

テンプレートに、<$MTHelloWorld world=”Linux”$> を挿入して再構築すれば、メッセージ Hello Linux が表示される。Linuxを違う文字列にしてもOK。

では各行の意味。
1~2行目。前回同様。
3行目。はっきりとサブルーチンの参照に変えた。5行目はそのサブルーチンの本体。
6行目。参照 $ctx に MT::Template::Context のインスタンスが入る。プラグインに必要な情報がここから得られる。
7行目。参照 $arg に属性の連想配列が入る。
8~9行目。属性worldが定義されていればそれを使い、未定義であればデフォルトの World を使う。

Comments are closed.

Post Navigation