編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

TTの自作プラグイン

自作プラグインの置き場を決める。

ここではlib/Myapp/TTというディレクトリを作って、そこにすることにした。

lib/Myapp/View/TT.pm

__PACKAGE__->config({
   PLUGIN_BASE => 'Myapp::TT',
}

自作プラグイン(フィルター)を作る

lib/Myapp/TT/Util.pm

package Myapp::TT::Util;

use strict;
use base qw/Template::Plugin/;

sub new {
   my ( $class, $context, @args ) = @_;
   $context->define_filter( 'sex', \&sex );
   bless {}, $class;
}

sub sex {
   #my ( $self, $str ) = @_;
   my $str = shift;
   if ( $str == 1 ) {
       return '男';
   }
   elsif ( $str == 2 ) {
       return '女';
   }
   else {
       return '?';
   }
}
1;

テンプレートファイルを書く

以下でmember.sexの値が1なら「男」と表示される。

<html>
[% USE Util %]
性別:[% member.sex | sex %]
</html>

引数を取るフィルターを作る

動的なフィルターを作る事によって、引数を渡せる。define_filter()に渡す引数に1をつけて、動的である事を示す。

$context->define_filter( 'jptruncate', \&jptruncate, 1);
(略)
sub jptruncate {
    my ($context, $length) = @_;
    $length= -1 unless defined $length;
    return sub {
        my $str = shift;
        Encode::encode('euc-jp',substr(Encode::decode('euc-jp',$str), 0, $length));
    }
}
<html>
[% USE Util %]
[% long_jp_text | jptruncate 50 %]
</html>

参考

http://search.cpan.org/~abw/Template-Toolkit-2.19/lib/Template/Manual/Config.pod#Plugins_and_Filters


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2007-05-06 (日) 06:15:03 (3912d)