模板工具包包含钩子?

时间:2012-07-03 09:30:42

标签: perl hook template-toolkit

当我包含模板并且我可以在其中更改模板的路径时,是否存在某种类型的钩子?

e.g。

[% INCLUDE test %]

我希望将'test'的路径改为'AE / test.tt'或'FR / test.tt'。


我们的想法是更改模板的路径,而不更改包含所在的模板。

2 个答案:

答案 0 :(得分:5)

执行此操作的常规方法是在构建INCLUDE_PATH对象时使用Template参数:

my $tt = Template->new({INCLUDE_PATH => 'AE'});

构建一个新的Template实例并不是什么大问题,所以没有强大的理由不在你处理模板的时候动态制作新的实例,但是,如果你在一个持久的环境,真的需要性能,总是可以选择创建多个:

my %tt;
$tt{ae} = Template->new({INCLUDE_PATH => 'AE'});
$tt{fr} = Template->new({INCLUDE_PATH => 'FR'});
# ... code ... code ... code ...
$lang = 'ae';
# ... code ... code ... code ...
$tt{$lang}->process($template_name);

答案 1 :(得分:2)

我认为这可能就像这个Template例子:

[% mytest = 'AE/test.tt' %]
[% INCLUDE  $mytest  %]           # 'AE/test.tt'

此处未经过测试。

请参阅http://template-toolkit.org/docs/manual/Directives.html#section_INCLUDE