当我包含一个模板时,是否有一种钩子可以执行,在其中我可以更改模板的路径?
例如:
[% INCLUDE test %]
我希望将路径更改为“test”,例如“AE/test.tt”或“FR/test.tt”。
这个想法是更改模板的路径,而不更改包含该路径的模板。
当我包含一个模板时,是否有一种钩子可以执行,在其中我可以更改模板的路径?
例如:
[% INCLUDE test %]
通常做法是在构建Template
对象时使用INCLUDE_PATH
参数:
my $tt = Template->new({INCLUDE_PATH => 'AE'});
建立一个新的模板
实例并不是什么大问题,因此在处理模板时随时创建一个新的模板实例没有强烈的理由不这样做。但是,如果您处于持久环境中,并且确实需要性能,则始终可以选择创建多个模板实例:
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