ダイナミック・パブリッシング&DynamicMTML用のプラグイン(ファンクションタグ)のひな形(その2)

昨日に続き、ダイナミック・パブリッシング&DynamicMTML用のプラグイン(ファンクションタグ)のひな形の作り方を解説します。

1.Perlのプラグインのコード

Perlのプラグインのコードは、以下のような書き方になります。

package モジュール名;

use strict;

sub サブルーチン名 {
    my ($ctx, $args) = @_;
    テンプレートタグの値を求める処理
    return テンプレートタグの値;
}

1;

モジュール名とサブルーチン名は、config.yamlファイルの「function」の部分で定義した名前に合わせます。
そして、サブルーチンの中で、テンプレートタグの値を求める処理を行い、return文でその結果を戻り値として返します。

例えば、昨日のconfig.yamlのように、以下の条件でテンプレートタグを作るとします。

テンプレートタグ名MTHelloMTWorld
モジュール名HelloMTWorld::Plugin
サブルーチン名hello_mt_world
テンプレートタグの値「Hello MT World.」の文字列

この場合だと、Perlのプラグインのコードは以下のようになります。

package HelloMTWorld::Plugin;

use strict;

sub hello_mt_world {
    my ($ctx, $args) = @_;

    return 'Hello MT World.';
}

1;

また、モジュールのファイルは、libディレクトリの中に入れます。
モジュール名の一番最後の「::」のあとが、モジュールのファイル名になります。ファイルの拡張子は「.pm」です。
また、ファイル名の前の部分がディレクトリ名になります。

今取り上げている例だと、モジュール名がHelloMTWorld::Pluginです。
したがって、libディレクトリの中にHelloMTWorldディレクトリを作り、その中にPlugin.pmというファイル名で保存します。

2.PHPのプラグインのコード

PHPのプラグインのコードは、以下のような書き方になります。

<?php
function smarty_function_テンプレートタグ名($args, &$ctx) {
    テンプレートタグの値を求める処理
    return テンプレートタグの値;
}
?>

「テンプレートタグ名」の部分に、テンプレートタグ名をすべて小文字にした名前を入れます。
また、テンプレートタグ名の先頭の「mt」も必要です。

たとえば、今取り上げている例だと、「MTHelloMTWorld」というテンプレートタグを追加して、「Hello MT World.」の文字列を出力するようにしています。
この場合だと、PHPのプラグインのコードは以下のようになります。

<?php
function smarty_function_mthellomtworld ($args, &$ctx) {
    return 'Hello MT World.';
}
?>

作成したPHPのファイルには、「function.テンプレートタグ名.php」という名前をつけて、プラグインのphpディレクトリに保存します。
テンプレートタグ名はすべて小文字で書き、また先頭の「mt」も付けます。
今取り上げている例だと、ファイル名を「function.mthellomtworld.php」にします。

3.サンプルファイル

ここまでで紹介したひな形のファイルは、こちらからダウンロードすることができます。