从本节开始我们来学习一下如果把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新 闻显示文件)
|
|----
|