文章詳情頁
用PHP制作靜態網站的模板框架(四)
瀏覽:5日期:2024-01-07 15:15:07
靜態網站的模板框架 首先,我們象前面一樣為所有的頁面公用元素以及頁面整體布局編寫模板文件;然后從所有的頁面刪除公共部分,只留下頁面內容;接下來再在每個頁面中加上三行PHP代碼,如下所示: <?php <!-- home.php --> <?php require('prepend.php'); ?> <?php pageStart('Home'); ?> <h1>你好</h1> <p>歡迎訪問</p> <img src="demo.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'); } ?>
標簽:
PHP
排行榜
