DynamicMTML解説(1)-MTPluginクラスとconfig.php
公開日 : 2011-12-14 11:37:10
DynamicMTMLは一言でいえば「静的なHTMLファイルの中のMTタグをダイナミックに処理する」ということになるでしょう(HTMLじゃなくてもXMLでもJavaScriptでも何でもいいわけですが)。確かにそのことによってスマートフォンに対する分岐なんかがMTタグで書けるようになったわけです。
ただ、それはDynamicMTMLの一面にすぎません。ただ、一度に紹介しきれないので何度かに分けてご紹介しようと思います。
MTPluginクラスとconfig.php
そうなんです。元々MTのダイナミックパブリッシングはSmartyの拡張なので、Smartyの作法に従って function.mthellomtworld.php みたいなファイルをタグの数だけ用意する必要があります。MTのphp/libディレクトリの下を覗いてみてください。いくつファイルありますか? 正直やってらんねーな、というほどのファイル数です(よくメンテしてるな、てか、よく書いたなこれ)。
DynamicMTMLにはMTPluginというクラスがあって、そいつを継承したクラスを作ることでこんな書き方ができるようになります。ファイルの位置は plugins/HelloWorld/php/config.php です。配列の形で指定するから、ひとつのファイルにまとめてタグを実装できます。案件で使う処理をまとめて書けるからメンテンスもしやすいですよね。
<?php
class HelloWorld extends MTPlugin {
var $app;
var $registry = array(
'name' => 'HelloWorld',
'tags' => array(
'function'
=> array( 'helloworld'
=> 'hdlr_helloworld' ),
),
);
function hdlr_helloworld($args, &$ctx) {
return 'Hello MT World.';
}
}
?>
MT使いの方ならこのコード、ピンとくると思うんですが、そう、Perlでの書き方と殆ど同じですよね。Perlのinit_registryと同じ指定方法です。
この例はテンプレートタグの書き方ですが「Perlと同じ書き方」ができるようにDynamicMTMLにはMT::Objectと'ほぼ'互換のORマッパやMTのタスク(run-periodic-tasksとほぼ同等のことがPHPでかけたり)や、静的ファイルの再構築をPHPで行う方法なんかも含まれています。
次回以降改めてご紹介しますが、僕にしては珍しく? ドキュメントも丁寧に書いているので、宜しければ参考にしてください。