改模仿smarty的概念

繼之前模仿xoops的模組撰寫方式後,今天突發奇想改模仿smarty樣板的概念。

就是把所有需要輸出的資料全部都丟給某幾個固定的變數承接,例如$main。最後再判斷有沒有$main這個變數,有的話再引入樣版檔。

樣板檔的內容其實是單純的HTML主體標籤,在它的<body>標籤裡echo php變數$main。當然變數前後必須再加上php識別標籤(<?php  ?>)才行。

因為輸出統一由template.php負責,所以承載輸出資料的變數必須固定才行,但數量卻不一定只能有一個。可以將不同的輸出資料擺到不同的變數,例如必須放在<head>的資料放到$head,javascript的放到$jsfile…等,然後在樣板檔的適當位置將之echo出來就可以了。簡易的smarty概念實作就這樣完成。

實作範例:

《index.php》

<?php

include “db.php”;   //資料庫連線設定

$sql=”select a,b,c from tbl where a>10″;

$res=@mysql_query($sql);

if(mysql_num_rows($res)>0){

$main=””;

while(list($a,$b,$c)=mysql_fetch_row($res)){

$main.=”a+b+c=”.$a+$b+$c.”<br/>”;

}

}

if($main){

include “template.php”;

}

?>

《template.php》

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>
<meta content=”PSPad editor, www.pspad.com”>
<title></title>
</head>
<body>

<?php
echo $main;
?>

</body>
</html>

在〈改模仿smarty的概念〉中有 1 則留言

  1. 可以再多做一個function用來顯示內容,節省在template.php裡echo的動作。
    假定function叫show_template($item),帶一個$temp參數,它是用來裝$main這一類要顯示的內容,函數內的實作僅有echo $item。template.php裡的echo $main,就改成show_template($show),看起來簡潔多了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Proudly using Dynamic Headers by Nicasio WordPress Design