程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 用PHP制作靜態網站的模板框架(四)

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

編輯:關於PHP編程

靜態網站的模板框架

   首先,我們象前面一樣為所有的頁面公用元素以及頁面整體布局編寫模板文件;然後從所有的頁面刪除公共部分,只留下頁面內容;接下來再在每個頁面中加上三行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');
}

?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved