4

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

例如

[% INCLUDE test %]

我想将“测试”的路径更改为“AE/test.tt”或“FR/test.tt”。


这个想法是在不更改包含所在的模板的情况下更改模板的路径。

4

2 回答 2

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);
于 2012-07-03T11:13:04.687 回答
2

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

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

这里没有测试。

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

于 2012-07-03T09:38:34.857 回答