用PHP制作靜態(tài)網(wǎng)站的模板框架(四)
更新時間:2006年10月09日 00:00:00 作者:
靜態(tài)網(wǎng)站的模板框架
首先,我們象前面一樣為所有的頁面公用元素以及頁面整體布局編寫模板文件;然后從所有的頁面刪除公共部分,只留下頁面內(nèi)容;接下來再在每個頁面中加上三行PHP代碼,如下所示:
<?php
<!-- home.php -->
<?php require('prepend.php'); ?>
<?php pageStart('Home'); ?>
<h1>你好</h1>
<p>歡迎訪問</p>
<img src="demo.jpg">
<p>希望你能夠喜歡本網(wǎng)站</p>
<?php pageFinish(); ?>
?>
這種方法基本上解決了前面提到的各種問題?,F(xiàn)在文件里只有三行PHP代碼,而且沒有任何一行代碼直接涉及到模板,因此要改動這些代碼的可能性極小。此外,由于HTML內(nèi)容位于PHP標(biāo)記之外,所以也不存在特殊字符的處理問題。我們可以很容易地將這三行PHP代碼加入到所有靜態(tài)HTML頁面中。
require函數(shù)引入了一個PHP文件,這個文件包含了所有必需的與模板相關(guān)的PHP代碼。其中pageStart函數(shù)設(shè)置模板對象以及頁面標(biāo)題,pageFinish函數(shù)解析模板然后生成結(jié)果發(fā)送給瀏覽器。
這是如何實(shí)現(xiàn)的呢?為什么在調(diào)用pageFinish函數(shù)之前文件中的HTML不會發(fā)送給瀏覽器?答案就在于PHP 4的一個新功能,這個功能允許把輸出到瀏覽器的內(nèi)容截獲到緩沖區(qū)之中。讓我們來看看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');
}
?>
首先,我們象前面一樣為所有的頁面公用元素以及頁面整體布局編寫模板文件;然后從所有的頁面刪除公共部分,只留下頁面內(nèi)容;接下來再在每個頁面中加上三行PHP代碼,如下所示:
<?php
<!-- home.php -->
<?php require('prepend.php'); ?>
<?php pageStart('Home'); ?>
<h1>你好</h1>
<p>歡迎訪問</p>
<img src="demo.jpg">
<p>希望你能夠喜歡本網(wǎng)站</p>
<?php pageFinish(); ?>
?>
這種方法基本上解決了前面提到的各種問題?,F(xiàn)在文件里只有三行PHP代碼,而且沒有任何一行代碼直接涉及到模板,因此要改動這些代碼的可能性極小。此外,由于HTML內(nèi)容位于PHP標(biāo)記之外,所以也不存在特殊字符的處理問題。我們可以很容易地將這三行PHP代碼加入到所有靜態(tài)HTML頁面中。
require函數(shù)引入了一個PHP文件,這個文件包含了所有必需的與模板相關(guān)的PHP代碼。其中pageStart函數(shù)設(shè)置模板對象以及頁面標(biāo)題,pageFinish函數(shù)解析模板然后生成結(jié)果發(fā)送給瀏覽器。
這是如何實(shí)現(xiàn)的呢?為什么在調(diào)用pageFinish函數(shù)之前文件中的HTML不會發(fā)送給瀏覽器?答案就在于PHP 4的一個新功能,這個功能允許把輸出到瀏覽器的內(nèi)容截獲到緩沖區(qū)之中。讓我們來看看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');
}
?>
相關(guān)文章
PHP中浮點(diǎn)數(shù)計算比較及取整不準(zhǔn)確的解決方法
這篇文章主要介紹了PHP 浮點(diǎn)數(shù)計算比較及取整不準(zhǔn)確的解決方法,需要的朋友可以參考下2015-01-01PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作
PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作...2007-03-03壞狼php學(xué)習(xí) 計數(shù)器實(shí)例代碼
首先進(jìn)入phpmyadmin建立1個數(shù)據(jù)庫命名為db,然后建立幾個表.name是用戶badwolf的訪問記數(shù),IP是存來訪IP,new是存數(shù).2008-06-06