Smarty例程学习(原创)
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=433402 存档链接: https://web.archive.org/web/20041104032327id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=433402
APMの家
<<<向往西藏
|
首页
|
php空间2>>>
Smarty例程学习(原创)----实例篇(一、使用php内置mysql语句)
时间:2004-10-10
Smarty例程学习(原创)----实例篇(一、使用php内置mysql语句)
Smarty实例教程 ----实例篇(一、使用PHP内置MYSQL函数)
从本节开始我们来学习一下如果把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 (数据库的建立文档) 详细情况请大家下载实例后对照结构图。
三、模板中的实例片段:
- index.tpl: index.tpl是站点首页的模板类,打开它的源文件后我们可以首先看到这么二句: ==================================================
- <{下面这一句为本页面的页面头}>
- <{include file="header.tpl"}> ================================================== 第 1 句大家都知道了,是模板注释 第 2 句表示在当前位置要包含另一个文件,什么文件呢,header.tpl,这里的这个header.tpl是页面的标准页头文件,把它单独拿出来是为将这一部分独立出来,以便在在其它页面进行重用,习惯上要把页头文件写在一个table中,但因为我的实例是早已做好的,所以有些不符合规范。 再来看最后一句: =================================================
- <{include file="foot.tpl"}> ================================================= 不用说大家都明白了,就是包含一个页脚文件。 再看看国内新闻部分的模板代码: =================================================