当我包含模板并且我可以在其中更改模板的路径时,是否存在某种类型的钩子?
e.g。
[% INCLUDE test %]
我希望将'test'的路径改为'AE / test.tt'或'FR / test.tt'。
我们的想法是更改模板的路径,而不更改包含所在的模板。
答案 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