テンプレートを含めるときに実行され、テンプレートへのパスを変更できるフックのタイプはありますか?
例えば
[% INCLUDE test %]
そして、「test」へのパスを「AE/test.tt」や「FR/test.tt」のように変更したいと考えています。
アイデアは、インクルードが配置されているテンプレートを変更せずに、テンプレートへのパスを変更することです。
テンプレートを含めるときに実行され、テンプレートへのパスを変更できるフックのタイプはありますか?
例えば
[% INCLUDE test %]
そして、「test」へのパスを「AE/test.tt」や「FR/test.tt」のように変更したいと考えています。
アイデアは、インクルードが配置されているテンプレートを変更せずに、テンプレートへのパスを変更することです。
これを行う通常の方法は、オブジェクト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);
これは次の例のように可能だと思いますTemplate
:
[% mytest = 'AE/test.tt' %]
[% INCLUDE $mytest %] # 'AE/test.tt'
ここではテストされていません。
http://template-toolkit.org/docs/manual/Directives.html#section_INCLUDEを参照してください。