模板解析的原理
老是听这个 概念,但是不明白运行机制,百度一下,就会知道:
要了解模板的解析原理,首先我们要弄清楚下面这几个问题。
1、 模板在数据库中的存放方式。
2、 模板是如何跟前台的文件联系起来的。
3、 模板中能解析什么标签由什么来控制。
相信了解以上的几个问题之后,我们对模板的解析原理就有了一个比较系统的认识。
下面我们分别来看一下这几个问题
1、模板在数据库中的 存放方式
我们在后台可以快速切换模板方案,每一个模板方案都有自己完整的一套模板,所以我们可以先把模板按照模板方案分类,我们打开PE_Template这个表,可以看到ProjectName这 个字段就存储了模板方案的名称,这样我们就可以看到这样一个关联,储存模板方案的数据表PE_TemplateProject跟 存储模板的数据表PE_Template,通过ProjectName来 关联。
在同一个模板方案里面的模板,我们再进行划分,第二次划分可以用频道ID来 划分,频道内相关模板,数据库存储这个频道的频道ID,网站通用模板,会员模板,我们用0来表示其频道ID。这样,我们就可以出区别一个模板 是属于某个频道的模板,或者是网站通用模板,会员模板中的一种。
频道ID相同的模板, 我们怎么继续划分呢?,这里介绍另外一个字段TemplateType,这个字段代表模板类型,系 统是这样划分模板类型的,可以在下面文章中查阅:
/Develop/SiteWeaver/Template/2396.html
一个频道里面可以多个模板有相同的模板类型ID,里面有且只有一个是默认的模板,比如说,我们某 个文章频道,可以建立多个首页模板,可是这些模板中只能将其中一个指定为默认的模板。
2、 模板是如何跟前台的文件联系起来的
当我们前台访问某个页面,看到的页面是已经解析好的页面,页面的内容就是我们在后台模板中设置的内容(当然是指这个页面有对应模 板的情况),程序是如何通过这个页面定位到相应模板的呢?下面介绍一下一个比较重要的函数:
Function GetTemplate(iChannelID, TemplateType, TemplateID)
GetTemplate函数的作用是取得数据库中相应模板的模板内容, 这个函数有三个参数,含义如下:
iChannelID:模板所在的频道ID
TemplateType:模板的模板类型ID
TemplateID:模板的模板ID,如果是0,则取默认模板的值。
当我们定义好这三个参数的值之后,我们就可以去除相应模板的模板内容了,比如我们要取默认首页模板的模板内 容,那么iChannelID为0,TemplateType为1,TemplateID为0,也就是调用GetTemplate(0, 1, 0)就可以了。每个需要调用模板的页面,都有直接或者简介调用这个取模板 内容的函数。
有些模板,比如栏目页模板,不同的栏目可以指定不同的模板,这个又是如何实现的?
我们添加栏目的时候,在PE_Class表里面会存储这 个栏目的默认模板,默认风格,栏目下文章的默认内容页模板,风格这些数据,在前台解析栏目页的时候,是先获取到相应的值,比如说获取到这个栏目对应的模板ID,然后再传递给GetTemplate(iChannelID, TemplateType, TemplateID)这个函数,这样,不同栏目就可以读取到相应的模板了。
3、模板中能解析什么标签由什么来控制。
我们成功获取到模板的内容之后,并不能保证这个模板的内容都能正常解析,模板里面能够解析什么标签?这个由什么内容来控制?
一般来说,每个页面都对应有一个函数,用来解析这个页面的模板的内容,比如网站首页的函数GetHTML_SiteIndex, 文章频道首页对应的函数GetHTML_Index,栏目页对应的函数GetHtml_Class等,在这些函数里面对模板的内容进行替换标签,权限判断等处理,最后得到我们可以浏 览到的html代码。一个页面能解析什么标签,也跟具体函数的定义有关。
百度联盟广告正在载入中....
要饭的 转载自:http://tech.powereasy.net/Develop/SiteWeaver/Template/2397.html
目录:未归类的 | Others 标签: 机制, 模板, 运行
分享到:
人人网
QQ
百度
Twitter
Google Reader
开心网
Google Buzz
标签相关日志
- 暂无相关日志,请查看左边热门日志
我还以为是说theme 呢?
文章中的观点不错,支持下,有空记得回访下小站,呵呵,一起交流交流。
技术文章,支持。
@老七 类似theme这样的东西吧,wp的theme是个啥原理呢?
@AV客 我也是转的,哈哈
@要饭的 这一行,无止境,多学习点总是好的
来过,学习过,哈哈,博主的文章有东西可学,收藏了。
原理很复杂。学习了。
好长,先占座在看
打包机来了,哈哈,同是站长。来贵博客交流一下,学点东西。
您好朋友?我来到您站来支持您了?你站的文章很有创意啊?我们做个朋友吧?呵呵?我最大的心愿就是希望您在我站发个帖子吧?注册到发帖只需要6秒钟时间啊?期待你的到来?我会继续支持贵站的啊?
来过,踩过,不容错过!
o(∩_∩)o
我也是第一次听
呵呵~
技术性的 看不懂~
太枯燥了,没看完~
@ikeeptrying 我也是一知半解的,收藏一下
@笔头 说实话我都没怎么看完,收藏一下,日后用的着的时候就可以查了
什么模板啊,做真么用的
草草看了遍 没明白 复制到手机里 挤公交时候再学习学习
@博百优 现在 很多的cms系统,都可以换模板的,说白了就是网站的样式,拿最近的wp来说吧,类似主题
@yookcc 哈哈,你可是爱学习啊,挤公交还学习,小心可别挤不上去了