|
“這確實(shí)不錯(cuò)”,你也許會(huì)想,“我的網(wǎng)站主要就是由大量的靜態(tài)頁面構(gòu)成?,F(xiàn)在我可以從所有頁面中刪除它們的公共部分,要更新這些公共部分實(shí)在太麻煩了。以后我就可以用模板制作出很容易維護(hù)的統(tǒng)一頁面布局?!钡虑椴⒎沁@么簡單,“大量的靜態(tài)頁面”道出了問題的所在。
請(qǐng)考慮上面的例子。這個(gè)例子實(shí)際上只有一個(gè)example.php頁面,它之所以能夠生成整個(gè)網(wǎng)站的所有頁面,是因?yàn)樗昧薝RL中的查詢字符串從數(shù)據(jù)庫之類的信息源動(dòng)態(tài)地構(gòu)造出頁面。
我們之中的大多數(shù)人所運(yùn)行的網(wǎng)站并不一定都有數(shù)據(jù)庫支持。我們的網(wǎng)站大多數(shù)由靜態(tài)頁面構(gòu)成,然后用php在這里、那里加上一些動(dòng)態(tài)功能,比如搜索引擎、反饋表單等。那么,如何在這種網(wǎng)站上應(yīng)用模板呢?
最簡單的方法是為每一個(gè)頁面復(fù)制一份php文件,然后在每一個(gè)頁面中把php代碼里代表內(nèi)容的變量設(shè)置成合適的頁面內(nèi)容。例如,假設(shè)有三個(gè)頁面,它們分別是主頁(home)、關(guān)于(about)和產(chǎn)品(product),我們可以用三個(gè)文件分別生成它們。這三個(gè)文件的內(nèi)容都類如:
<?php
// home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );
$content = "<p>歡迎訪問</p>
<img src="demo.jpg">
<p>希望你能夠喜歡本網(wǎng)站</p>";
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
?>
顯然,這種方法有三個(gè)問題:我們必須為每一個(gè)頁面復(fù)制這些復(fù)雜的、牽涉到模板的php代碼,這與重復(fù)公共頁面元素一樣使得頁面難以維護(hù);現(xiàn)在文件又混合了HTML和php代碼;為內(nèi)容變量賦值將變得非常困難,因?yàn)槲覀儽仨毺幚砗么罅康奶厥庾址?
解決這個(gè)問題的關(guān)鍵就在于分離php代碼和HTML內(nèi)容,雖然我們不能從文件中刪除所有的HTML內(nèi)容,但可以移出絕大多數(shù)php代碼。
php技術(shù):用PHP制作靜態(tài)網(wǎng)站的模板框架(三),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。