從本節開始我們來學習一下如果把Smarty應用到實際的例子中. 為了示範說明,我將以前寫的一個站 點作為執行個體來講來下.先說明一下, 我本人的美術功底不是很強,所以設計出來的頁面不太好看,大家就對 付著看吧
在看本文之前,可以先看看indexbak.htm與newsbak.htm,它們是我們產生後的例圖。
一、 首先來說明一下我們將要使用到的資料庫,下面我先將資料庫源檔案給大家例出 來:
CREATE DATABASE News;
USE News;
/****************************
*
* 表 名: tb_news_ch
* 用 途: 國內新聞表
*
****************************/
CREATE TABLE tb_news_ch
(
iNewsID interger (11) primary key auto_increment,
vcNewsTitle varchar(50) not null,
ltNewsContent longtext not null
);
/****************************
*
* 表 名: tb_news_in
* 用 途: 國際新聞表
*
****************************/
CREATE TABLE tb_news_in
(
iNewsID interger(11) primary key auto_increment,
vcNewsTitle varchar(50) not null,
ltNewsContent longtext not null
);
/****************************
*
* 表 名: tb_news_mu
* 用 途: 娛樂新聞表
*
****************************/
CREATE TABLE tb_news_mu
(
iNewsID interger(11) primary key auto_increment,
vcNewsTitle varchar(50) not null,
ltNewsContent longtext not null
);
我這裡簡單的將資料庫說明一下.
第一個問題:
大家可以看到,其實3個資料表的欄位名都一樣,那麼為什麼不把它們合并成一個資料 表呢,答案很簡單:效率,在開發的時候我們可能感覺不出有什麼可提高效率的地方,不過大家想想,當這個 網站運行一段時間後,它的新聞資料量就會變的很大,而且考慮到如果將來網站做大後可能將各個類型分 離出來形成類似china.xxx.com, international.xxx.com, music.xxx.com,將每一欄目獨立分出去物理 上做成一個單獨的網站,到那時如果新聞還是合起來放置的話就會造成資料庫瓶頸,所以針對當前的網站, 我認為還是分開的比較合理.
第二個問題:
有人可能問了,你在欄位前加的i, vc,lt幹什麼 用?這裡是按照欄位類型來命名的, 這也是一種良好風格的體現,將類型首碼放在變數前,使用使用者不用看 欄位定義就可以知道欄位是什麼類型,這是從微軟的匈牙利命名法中參考過來的,在資料庫設計時,我先將 每種類型定義成1--3個字母,然後在每個欄位前加相應的代碼來代表它的類型.像上邊,我將各個資料庫字 段類型定義為:
integer i
varchar vc
longtext lt
char c
....
在使用的時候,你可以往每個資料表中輸入5條資料記錄以備我們在調試執行個體時使用 .
二、樣本網站目錄結構:
PHP代碼:--------------------------------------- -----------------------------------------
+Web (網站根目錄)
|
|----+comm (Smarty相關文檔目錄)
| |
| |----+plugins (Smarty外掛程式目錄)
| |----- Config_File.class.php (Smarty設定檔)
| |-----Smarty.class.php (Smarty類主檔案)
| |-----Smarty_Compiler.class.php (Smarty編譯類檔案)
|
|----+cache (Smarty緩衝 目錄,*nix下保證讀寫權限)
|
|----+templates (網站模板檔案存放目錄)
| |
| |----header.tpl(頁面頁頭模板檔案)
| |----index.tpl(網站首頁模板檔案)
| |---- foot.tpl(頁面頁尾模板檔案)
| |----news.tpl (新聞頁模板檔案)
|
|
|---- +templates_c (模板檔案編譯後存放目錄,*nix下保證讀寫權限)
|
|----+css (網站CSS文 件目錄)
|
|----+image (網站圖片目錄)
|
|----+media (網站Flash動畫存放目 錄)
|
|----indexbak.htm (首頁原始效果圖)
|
|----newsbak,htm (新聞頁原始 效果圖)
|
|----index.php (Smarty首頁程式檔案)
|
|----news.php (Smarty新 聞顯示檔案)
|
|----常式說明.txt (目錄說明)
|
|----資料庫建立檔案.txt ( 資料庫的建立文檔)
詳細情況請大家下載執行個體後對照結構圖。
------------------------- -------------------------------------------------------