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