当我包含一个模板并且我可以在其中更改模板的路径时,是否会执行某种类型的钩子?
例如
[% INCLUDE test %]
我想将“测试”的路径更改为“AE/test.tt”或“FR/test.tt”。
这个想法是在不更改包含所在的模板的情况下更改模板的路径。
当我包含一个模板并且我可以在其中更改模板的路径时,是否会执行某种类型的钩子?
例如
[% INCLUDE test %]
我想将“测试”的路径更改为“AE/test.tt”或“FR/test.tt”。
这个想法是在不更改包含所在的模板的情况下更改模板的路径。
这样做的正常方法是在构造对象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);
我认为这可能像这个Template
例子:
[% mytest = 'AE/test.tt' %]
[% INCLUDE $mytest %] # 'AE/test.tt'
这里没有测试。
请参阅http://template-toolkit.org/docs/manual/Directives.html#section_INCLUDE