用PHP制作靜態網站的模板框架(四)

靜態網站的模板框架

   首先,我們象前面一樣為所有的頁面公用元素以及頁面整體佈局編寫模板文件;然後從所有的頁面刪除公共部分,隻留下頁面內容;接下來再在每個頁面中加上三行php(做為現在的主流開發語言)代碼,如下所示:


<?php(做為現在的主流開發語言)

<!– home.php(做為現在的主流開發語言) –>
<?php(做為現在的主流開發語言) require(prepend.php(做為現在的主流開發語言)); ?>
<?php(做為現在的主流開發語言) pageStart(Home); ?>

<h1>你好</h1>
<p>歡迎訪問</p>
<img src=”/edu/UploadPic/2008-2/2008215175946578.jpg””>
<p>希望你能夠喜歡本網站</p>

<?php(做為現在的主流開發語言) pageFinish(); ?>

?>

   這種方法基本上解決瞭前面提到的各種問題。現在文件裡隻有三行php(做為現在的主流開發語言)代碼,而且沒有任何一行代碼直接涉及到模板,因此要改動這些代碼的可能性極小。此外,由於HTML內容位於php(做為現在的主流開發語言)標記之外,所以也不存在特殊字符的處理問題。我們可以很容易地將這三行php(做為現在的主流開發語言)代碼加入到所有靜態HTML頁面中。

   require函數引入瞭一個php(做為現在的主流開發語言)文件,這個文件包含瞭所有必需的與模板相關的php(做為現在的主流開發語言)代碼。其中pageStart函數設置模板對象以及頁面標題,pageFinish函數解析模板然後生成結果發送給瀏覽器。

   這是如何實現的呢?為什麼在調用pageFinish函數之前文件中的HTML不會發送給瀏覽器?答案就在於php(做為現在的主流開發語言) 4的一個新功能,這個功能允許把輸出到瀏覽器的內容截獲到緩沖區之中。讓我們來看看prepend.php(做為現在的主流開發語言)的具體代碼:

<?php(做為現在的主流開發語言)

require(class.FastTemplate.php(做為現在的主流開發語言));

function pageStart($title = ) {
GLOBAL $tpl;
$tpl = new FastTemplate(.);
$tpl->define( array( main => main.htm,
header => header.htm,
leftnav=> leftnav.htm ) );
$tpl->assign(TITLE, $title);
ob_start();
}

function pageFinish() {
GLOBAL $tpl;
$content = ob_get_contents();
ob_end_clean();
$tpl->assign(CONTENT, $content);
$tpl->parse(HEADER, header);
$tpl->parse(LEFTNAV, leftnav);
$tpl->parse(MAIN, main);
$tpl->FastPrint(MAIN);
}

?>

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。