2012-07-03 147 views
4

當我包含一個模板並且可以在其中更改模板的路徑時,是否會執行一些鉤子類型?模板工具包包含鉤子?

例如

[% INCLUDE test %] 

而且我希望到路徑更改爲「測試」是像「AE/test.tt」或「FR/test.tt」。


這個想法是改變模板的路徑而不改變包含的模板。

回答

5

這樣做的正常方式是構建你的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); 
+0

10倍,這可能工作,因爲我可以通過一個子到INCLUDE_PATH(我用的舞者和我用的是內置的模板引擎處理)。據我所知,沒有任何類型的鉤子,這可以讓我改變模板名稱或任何類型的內置別名功能(例如,傳遞散列的位置和包含INCLUDE以使用將模板名稱作爲關鍵字並將值作爲模板的真實路徑),對嗎? – bliof

+0

我不知道有任何掛鉤或別名功能,沒有。 –