模板解析的原理

05 13, 2010 21 评论放大字体

老是听这个 概念,但是不明白运行机制,百度一下,就会知道:

要了解模板的解析原理,首先我们要弄清楚下面这几个问题。

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

标签相关日志

  • 暂无相关日志,请查看左边热门日志

21 评论 我要评论

  • 1F
    老七  14:07 May 13, 2010    

    我还以为是说theme 呢?

  • 2F
    济南SEO  14:18 May 13, 2010    

    文章中的观点不错,支持下,有空记得回访下小站,呵呵,一起交流交流。

  • 3F
    AV客  14:19 May 13, 2010    

    技术文章,支持。

  • 4F
    要饭的  14:26 May 13, 2010    

    @老七 类似theme这样的东西吧,wp的theme是个啥原理呢?

  • 5F
    要饭的  14:26 May 13, 2010    

    @AV客 我也是转的,哈哈

  • 6F
    AV客  14:28 May 13, 2010    

    @要饭的 这一行,无止境,多学习点总是好的

  • 7F
    山东SEO  15:25 May 13, 2010    

    来过,学习过,哈哈,博主的文章有东西可学,收藏了。

  • 8F
    陆少博  16:21 May 13, 2010    

    原理很复杂。学习了。

  • 9F
    龙崽  18:29 May 13, 2010    

    好长,先占座在看

  • 10F
    打包机  19:21 May 13, 2010    

    打包机来了,哈哈,同是站长。来贵博客交流一下,学点东西。

  • 11F
    养花知识论坛  20:17 May 13, 2010    

    您好朋友?我来到您站来支持您了?你站的文章很有创意啊?我们做个朋友吧?呵呵?我最大的心愿就是希望您在我站发个帖子吧?注册到发帖只需要6秒钟时间啊?期待你的到来?我会继续支持贵站的啊?

  • 12F
    淘宝刷信用  00:05 May 14, 2010    

    来过,踩过,不容错过!
    o(∩_∩)o

  • 13F
    郑州seo  00:09 May 14, 2010    

    我也是第一次听

  • 14F
    ikeeptrying  09:34 May 14, 2010    

    呵呵~
    技术性的 看不懂~

  • 15F
    笔头  14:55 May 14, 2010    

    太枯燥了,没看完~

  • 16F
    要饭的  15:08 May 14, 2010    

    @ikeeptrying 我也是一知半解的,收藏一下

  • 17F
    要饭的  15:08 May 14, 2010    

    @笔头 说实话我都没怎么看完,收藏一下,日后用的着的时候就可以查了

  • 18F
    博百优  15:57 May 15, 2010    

    什么模板啊,做真么用的

  • 19F
    yookcc  17:23 May 16, 2010    

    草草看了遍 没明白 复制到手机里 挤公交时候再学习学习

  • 20F
    要饭的  10:19 May 17, 2010    

    @博百优 现在 很多的cms系统,都可以换模板的,说白了就是网站的样式,拿最近的wp来说吧,类似主题

  • 21F
    要饭的  10:20 May 17, 2010    

    @yookcc 哈哈,你可是爱学习啊,挤公交还学习,小心可别挤不上去了

我要留言 ↓

欢迎您来到要饭的,离开了你们的支持,我将会啥都不是!!!

友情推荐:看原创小说,下载免费小说,斗破苍穹都到----北方熊之舞

Google联盟广告正在载入中......

提交中,机器正在处理...