2010-10-26 29 views
1

我使用html :: template構建perl cgi :: application。從模板perl中分離佈局cgi :: application

我使用7-8不同的模板具有相同的佈局 - 頁眉,頁腳,左列等 我怎樣才能將這個HTML從模板文件中分離出來成爲一個佈局文件。除了cgi :: app和html :: template之外,我還需要哪些Perl模塊。

感謝

回答

6

我認爲Template-Tookit更好。

如果您絕對必須使用HTML :: Template,則可以使用TMPL_INCLUDE指令。它會搜索您定義的模板路徑,或者您可以指定另一個模板的完整路徑。它也會處理其中的變量。

您可以爲頁眉,頁腳等創建單獨的模板文件,並在您的頁面模板中創建TMPL_INCLUDE文件。它比Template Toolkit的WRAPPER更不優雅,更具有重複性(您將不得不在每個頁面中多次爲所有共享元素創建TMPL_INCLUDE),但它會完成工作。

如果可以,請投入時間並使用Template Toolkit。

+1

該做的工作!我會檢查這個工具包 - 謝謝 – prat 2010-10-26 16:10:05

0

那些不喜歡HTML :: Template的人請說明原因嗎?雖然Wrapper的想法對這個特別的海報有所幫助,但包含的想法並沒有錯:它們更加靈活,許多Web開發人員已經非常熟悉非動態發佈的概念。

+0

HTML :: Template只是非常有限。模板工具包更加靈活。有些人認爲模板工具包做得太多了(它可以......如果你願意,可以擠入很多邏輯),但它只是一個更好的系統。特別是,您可以傳遞對象,而您不能使用H :: T。 TT中有更多的格式化選項,並提供許多擴展來提供格式化和過濾器。 – 2010-10-26 21:15:58

+0

有趣...我想我會繼續使用HTML :: Template,直到找到它不能做的事情。當我看着TT時,它似乎在學習另一個完整的子語言。 – AmbroseChapel 2010-10-27 04:04:43

1

我不知道模板工具包。所以我不會討論哪種解決方案最方便。 我可以給你另一個解決方案,它依賴於運行你的cgi的服務器。 與Apache服務器,可以使用包括在HTML:

<!--#include virtual="/includes/header/header.htm"--> 

你可以叫HTM(靜態網頁),以及動態頁面:

<!--#include virtual="/perl/includes/dynamic.pl"--> 

,但你必須做一些Apache的調整。看到Apache Tutorial: Introduction to Server Side Includes

希望這會有所幫助,或者至少給一些想法