模板工具包包含钩子?

bli*_*iof 4 perl hook template-toolkit

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

例如

[% INCLUDE test %]
Run Code Online (Sandbox Code Playgroud)

我想的路径更改为"测试"是像"AE/test.tt"或"FR/test.tt".


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

Dav*_*man 5

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

my $tt = Template->new({INCLUDE_PATH => 'AE'});
Run Code Online (Sandbox Code Playgroud)

构建一个新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);
Run Code Online (Sandbox Code Playgroud)