【发布时间】:2012-07-03 17:16:50
【问题描述】:
当我包含一个模板并且我可以在其中更改模板的路径时,是否会执行某种类型的挂钩?
例如
[% INCLUDE test %]
我想将“test”的路径更改为“AE/test.tt”或“FR/test.tt”。
想法是改变模板的路径而不改变包含所在的模板。
【问题讨论】:
标签: perl hook template-toolkit
当我包含一个模板并且我可以在其中更改模板的路径时,是否会执行某种类型的挂钩?
例如
[% INCLUDE test %]
我想将“test”的路径更改为“AE/test.tt”或“FR/test.tt”。
想法是改变模板的路径而不改变包含所在的模板。
【问题讨论】:
标签: perl hook template-toolkit
执行此操作的正常方法是在构造 Template 对象时使用 INCLUDE_PATH 参数:
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
【讨论】: