Config
new時だけでなく、process時も第4引数として指定できます、
一度processを行うと、そのインスタンスは設定を保持し続けます。
また、new時に指定できるオプションとprocess時のオプションに全く違いはありません。
INCLUDE_PATH
入力元の指定やINCLUDE要素でファイルを読むときファイルを走査するディレクトリ、
リストリファレンスで指定するが、スカラーで単体を指定する事もできる。
#!/usr/bin/perl
my $t = Template::Like->new({ INCLUDE_PATH => ['abc', 'def'] });
$t->process("index.tt", $param, $output);
# abc/index.tt def/index.tt の順で走査される。
OUTPUT_PATH
出力先の指定
#!/usr/bin/perl
my $t = Template::Like->new({ OUTPUT_PATH => '/home/xxxx/public_html' });
$t->process("index.tt", $param, "index.html");
ABSOLUTE
入力元の階層制限です、標準では/等で絶対参照を許しませんが、
この設定を1にすると、絶対参照を指定出来るようになります。
#!/usr/bin/perl
my $t = Template::Like->new({ ABSOLUTE => 1 });
$t->process("/home/xxx/tmpl2/index.tt", $param, "index.html");
$t->process("/var/log/httpd.log", $param, "index.html");
RELATIVE
入力元の階層制限です、標準では../等で上に上がる事を許しませんが、 この設定を1にすると、上の階層を指定出来るようになります。
#!/usr/bin/perl
my $t = Template::Like->new({ RELATIVE => 1 });
$t->process("../tmpl2/index.tt", $param, "index.html");
$t->process("../../var/log/httpd.log", $param, "index.html");
テンプレートのINCLUDE要素の指定も同様に影響を受けます。
<% INCLUDE ../../var/log/httpd.log %>
TAG_STYLE
要素の書法です。
使える指定一覧
template [% ... %] (default)
template1 [% ... %] or %% ... %% (TT version 1)
metatext %% ... %% (Text::MetaText)
star [* ... *] (TT alternate)
php <? ... ?> (PHP)
asp <% ... %> (ASP)
mason <% ... > (HTML::Mason)
html <!-- ... --> (HTML comments)
指定例
#!/usr/bin/perl
my $t = Template::Like->new({ TAG_STYLE => "html" });
$t->process("../tmpl2/index.tt", $param, "index.html");
テンプレート側
<!-- var -->
START_TAG / END_TAG
指定例
#!/usr/bin/perl
my $t = Template::Like->new({ START_TAG => "@--", END_TAG => "--@" });
$t->process("../tmpl2/index.tt", $param, "index.html");
テンプレート側
@-- var --@
FILTERS
フィルターを記述します。
#!/usr/bin/perl
my $t = Template::Like->new({
FILTERS => {
lc => sub { lc($_[0]) },
uc => \&uc
}
});
$t->process("index.tt", { var => "abCD" }, "index.html");
sub uc { return uc($_[0]); }
テンプレート側
<!-- var | lc -->
<!-- var | uc -->
<!-- var -->
出力結果
abcd
ABCD
abCD
LOAD_FILTERS
フィルターを持つオブジェクトを渡します。
#!/usr/bin/perl
{
package Test::Filters;
use strict;
sub new {
return bless {}, $_[0];
}
sub uc {
my $self = shift;
my $str = shift;
return uc($str);
}
sub lc {
my $self = shift;
my $str = shift;
return lc($str);
}
}
my $t = Template::Like->new({
LOAD_FILTERS => [
Test::Filters->new
]
});
$t->process("index.tt", { var => "abCD" }, "index.html");
テンプレート側
<!-- var | lc -->
<!-- var | uc -->
<!-- var -->
出力結果
abcd
ABCD
abCD
CONSTANTS
パラーメーターの定数の設定が出来ます。
#!/usr/bin/perl
my $t = Template::Like->new( CONSTANTS => { title => "hoge" } );
テンプレート側
[% constants.title %]
CONSTANT_NAMESPACE
パラーメーターの規定値の呼び出し名を記述します。
#!/usr/bin/perl
my $t = Template::Like->new(
CONSTANTS => { title => "hoge" },
CONSTANT_NAMESPACE => "const"
);
テンプレート側
[% const.title %]
PRE_CHOMP / POST_CHOMP
空文字(\s)、改行文字(\n)を省きます。
PRE_CHOMPはタグから前方方向へ、POST_CHOMPは後方方向へ向かって処理します。
0 ... 省かない(標準)
1 ... 連続する空文字を省く、改行は1つまでしか含まない
2 ... 連続する空文字をスペースに変換する
3 ... 連続する空文字を省く
my $t = Template::Like->new(
PRE_CHOMP => 0,
POST_CHOMP => 1
);
$t->process(
"index.tt",
{
humans => [
{ name => 'hoge', age => 24 },
{ name => 'foo', age => 34 }
]
},
"index.html"
);
テンプレート側
[% FOREACH human = humans %]
- [% human.name %] (age [% human.age %])
[% END %]
出力結果
- hoge (age 24)
- foo (age 34)
