当我包含一个模板并且可以在其中更改模板的路径时,是否会执行一些钩子类型?模板工具包包含钩子?
例如
[% INCLUDE test %]
而且我希望到路径更改为“测试”是像“AE/test.tt”或“FR/test.tt”。
这个想法是改变模板的路径而不改变包含的模板。
当我包含一个模板并且可以在其中更改模板的路径时,是否会执行一些钩子类型?模板工具包包含钩子?
例如
[% INCLUDE test %]
而且我希望到路径更改为“测试”是像“AE/test.tt”或“FR/test.tt”。
这个想法是改变模板的路径而不改变包含的模板。
这样做的正常方式是构建你的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
的想法是路径动态变化,以模板 – bliof
10倍,这可能工作,因为我可以通过一个子到INCLUDE_PATH(我用的舞者和我用的是内置的模板引擎处理)。据我所知,没有任何类型的钩子,这可以让我改变模板名称或任何类型的内置别名功能(例如,传递散列的位置和包含INCLUDE以使用将模板名称作为关键字并将值作为模板的真实路径),对吗? – bliof
我不知道有任何挂钩或别名功能,没有。 –