從本節開始我們來學習一下如果把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 ( 數據庫的建立文檔)
詳細情況請大家下載實例後對照結構圖。
------------------------- -------------------------------------------------------