MT PluginのHello World !

 MTプラグインの最も簡単な実際的な作成方法を紹介します。ここではやはりHello World!をMTタグでもって出力する方法です。MTタグはすでに豊富なタグが用意されていますが、オリジナルのMTタグを作成することができます。例えば画像の表示機能をもっと簡単に充実させたい場合は既存のMTタグを越えてオリジナルのタグの作成ができます。しかし、ここでは最も基礎的な書き方から勉強してゆきます。

Hello World! プラグインを作る

 ここではオリジナルのMTタグ<$MTHello$>でもってHello World!を表示できるようなプラグインを作成します。これは実に用途の考えにくいMTタグですが、実際には<$Copy$>などでごく頻繁に使用するコピーライトを表示させたりすることに応用できると思います。
 すでにプラグインの作成方法を開発基礎(その2)までを勉強していることを前提としてここではコード内容を全部書いてみます。短いのでわかりやすいです。

package MT::Plugin::HelloWorld;    #パッケージ名の指定

use strict;
use base qw( MT::Plugin);
my $plugin = MT::Plugin::HelloWorld->new({
    id        =>    'helloworld',        # パッケージのID
    key        =>    '__PACKAGE__',        # だいたいいつも同じ
    name    =>    'HelloWorld',        # パッケージ名

    registry => {
        tags => {
            function => {
                'Hello' => \&hdlr_hello,
            }
        }
    }
});

MT->add_plugin($plugin);

sub hdlr_hello {
    return 'Hello World !';
}

# Return
1;
1. まずは、パッケージの宣言をします。HelloWorldというパッケージ名にしています。この先のIDの振り方、keyの設定(だいたいいつも同じ)、パッケージ名の設定は前回説明したので割愛。開発基礎(その2)を参照のこと。
package MT::Plugin::HelloWorld;    #パッケージ名の指定
use strict;
use base qw( MT::Plugin);
my $plugin = MT::Plugin::HelloWorld->new({
    id        =>    'helloworld',        # パッケージのID
    key        =>    '__PACKAGE__',        # だいたいいつも同じ
    name    =>    'HelloWorld',        # パッケージ名

2. ここから先が新しい部分です。
registry => {
        tags => {
            function => {
                'Hello' => \&hdlr_hello,
            }
        }
    }
これはID、key、nameと同じレベルでの設定でありまして、これらのパッケージが何をするのかという機能を登録する(registry => {)部分です。登録する機能はMTタグなので、tags=> {で登録します。しかし登録したい機能をここで直接指定はしません。ここではfunction(関数、Perlの言い方ではサブルーチン)として記述するわけです。
 その関数の内容は、'Hello'というもの、つまり<$MTHello$>というタグを登録したいという風にします。余談ですが、この'Hello'の記述でもって実際に使用できるMTタグは、
<$MTHello$>
<$mt:hello$>
<$mt:Hello$>
という風に可能です。自分がわかりやすいタグを使用するとよいです。
 この'Hello'という記述は\&hdlr_hello,という機能をもっていますよ!という風に指示を与えてやります。ここまででタグの登録が終わりました。括弧の付け方に注意してください。ちょっと複雑な入れ子になっていますので。
 また\&hdlr_helloの部分の\&hdlr_hello,は現在のところ殆ど定形で構いません。それは次のサブルーチンの部分で共通であれば大丈夫です。

3. \&hdlr_hello,というのは、Perlのサブルーチン(関数)を表しています。Perlを普段から使っている方にはわかりやすいものですが、PHPやJavascriptに慣れているとちょっと不自然な気がします。/&という見慣れない記号はfunctionという意味と同義です。Perlではこういうちょっと分かり辛い記号を使います。この関数の中身は、
sub hdlr_hello {
    return 'Hello World !';
}
という風に表現されています。先ほど指定したサブルーチンの実際の中身が表記されていて、hdlr_helloと記述しています。ここではタグが返す文字列はHello World!という単純な文字列なのでreturnに'Hello World !'を指定します。これで殆ど完成です。
 自分でいろいろと文字列を変えて実験してみてください。

 






プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer