« 勉強のためMT Pluginsを翻訳その1 | メイン | モバイルクリーナだって »
2003年09月25日
MT Pluginsてどうなってんの?その2
コンテナータグ
ここにコンテナータグを作るプラグインの例があります:
MT::Template::Context->add_container_tag(Loop => sub {
my $ctx = shift;
my $res = '';
my $builder = $ctx->stash('builder');
my $tokens = $ctx->stash('tokens');
for my $i (1..5) {
$ctx->stash('i_value', $i);
defined(my $out = $builder->build($ctx, $tokens))
or return $ctx->error($ctx->errstr);
$res .= $out;
}
$res;
});
MT::Template::Context->add_tag(LoopIValue => sub {
my $ctx = shift;
$ctx->stash('i_value');
});
テンプレートで次のように使えます:
The value of I is: <$MTLoopIValue$>
で、このように表示されます:
The value of I is: 1
The value of I is: 2
The value of I is: 3
The value of I is: 4
The value of I is: 5
条件タグ
条件タグは技術的には、まさにコンテナータグです。しかし、条件タグを非常に簡単に書くために、add_conditional_tag 方法を使えます。この方法は2つの引数を取ります:タグ名と条件分岐用サブルーチンへのリファレンスです。
例えば、下記のものは、3つのタグを付け加えています:そのコンテンツをいつも表示する
use MT::Template::Context;
MT::Template::Context->add_conditional_tag(IfYes => sub { 1 });
MT::Template::Context->add_conditional_tag(IfNo => sub { 0 });
MT::Template::Context->add_conditional_tag(EntryIfTitle => sub {
my $e = $_[0]->stash('entry') or return;
defined($e->title) && $e->title ne '';
});
これらのタグは、次のように使うことができます:
This entry has a title: <$MTEntryTitle$>
グローバル・フィルター
グローバル・タグ属性 (*)を加えるために、add_global_filter 方法を使うことができます。
例:
MT::Template::Context->add_global_filter(rot13 => sub {
(my $s = shift) =~ tr/a-zA-Z/n-za-mN-ZA-M/;
$s;
});
それは、このように使えます:
<$MTEntryTitle rot13="1"$>
匿名のサブルーチンは、3つの引数を手渡されます:フィルターにかけられるタグのスカラー値、属性にわたされた引数の値、とMT::Template::Contextオブジェクト。第二引数の例として、fooと名付けたフィルターを作ったとして、次のように呼び出します:
<$MTCommentAuthor foo="5"$>
コールバックルーティンへの第二引数は、5でしょう。
プラグインタグが、RSS-feedを示すためや、サーバー状況の情報、ヒットカウンターなどを実装するために書かれるでしょう。http://www.movabletype.org/resources.shtml から、プラグインをダウンロードすることができます。
--------------------------------------------------------------------------------
copyright© 2001-2003 Six Apart. All Rights Reserved.
(*)訳注:
Movable Type 2.64 マニュアルのテンプレートタグの全訳が下記の本で読めます。
もちろんグローバルタグ属性の訳文もあります。
Movable Typeで今すぐできるウェブログ入門

翻訳から生じた損害の補償はできかねます。
記載する内容はできるだけ正確にすべく努力していますが、
万全とはいきません。ご了承下さい。
投稿者 masa : 2003年09月25日 13:17
トラックバック
このエントリーのトラックバックURL:
http://www.yuruyakana.com/cgi-bin/mt-tb.cgi/52