我正在將站點轉換爲使用PHPTAL模板,現在我正在使用模板編寫所有新頁面,同時保留現有頁面原樣。如何在PHPTAL宏中打印未封閉標籤
年長的頁面使用一個標準的頁眉和頁腳,一個典型的頁面有這樣它的內容而產生的:
printHeader();
//print page content
printFooter();
在PHPTAL新頁面將使用相同的標準頁眉/頁腳所以我移動它們變成宏。我想爲新舊頁面頁眉和頁腳使用相同的源HTML。要做到這一點,我想編輯的printHeader()和printFooter()函數來使用模板打印的頁眉和頁腳宏:
printHeader() {
$source = '<metal:use-macro="macros.xhtml/header" />';
$header = new PHPTAL()
$header->setSource($source);
echo $header->execute();
}
我遇到的問題是,我的頭包含開幕<html>
和<body>
標籤,它們在頁腳中關閉。 PHPTAL拋出異常,因爲我的宏是無效的xml:
Not all elements were closed before end of the document. Missing: </tal:block></tal:block></tal:block></body></html></tal:block>
什麼是最簡單的方法呢?我發現使用結構來包含這些標記爲一個字符串的方法,但它似乎馬虎:
<tal:block metal:define-macro="header">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<tal:block tal:content="structure string:<html>" />
<head>
head content
</head>
<tal:block tal:content="structure string:<body>" />
header content
有一個更清潔的方式做到這一點?也許某種tal屬性會允許它忽略<html>
和<body>
缺失的結束標記?