帐号: 密码:
// 设为首页 // 收藏本站 // 请您留言 // 网址导航
远方教程-满足你的求知欲!
站内搜索:
HTML ASP PHP CSS DIV Dreamweaver Photoshop Word Excel PPT SEO 技巧
您当前位置: 网站首页 >> PHP教程 >> PHP实例教程 >> 阅读文章

dedecms代码研究07:MakeOneTag

来源:远方教程 作者:远方教程 发布时间:2015-07-20 查看次数:3753 访问[ 新版]

  今天有空就继续完成没有完成的事业。今天就接上一篇文章继续讲dedecms的静态页面生成过程。
简单回顾一下,前面我们首页动态文件index.php调用arc.partview.class.php来初始化首页模板,arc.partview.class.php通过SetTemplet调用DedeTagParse,在设置首页模板的时候,解析了模板,并生成模板的缓存或者说序列化文件。虽然模板被解析了,但是这种解析的只是把所有标签在模板中的位置以及他们的参数记录下来,并没有填充数据,接下来估计就要干这些事情了。

我们回到partview的SetTemplet方法,从$this->dtp->LoadTemplet($temp);这句往下看吧。

dedecms代码研究-远方教程

  下面if($this->TypeID > 0)这个if语句是设置当前页面的“面包屑导航”和标题。如果你使用过dedecms,对dedecms系统的操作比较熟悉,应该了解这个if里面的$this->Fields['title']这种数组元素,在页面模板中很多地方都是用了fields数组呢。

设置了两个变量,接下来就调用ParseTemplet解析模板啦。

这个ParseTemplet很简单,设置了一大堆全局变量,一看就知道了,页面里面用的什么channelid,topid之类的东西,有兴趣的朋友可以自己细致研究一下。我们注意到ParseTemplet方法最后一句,MakeOneTag($this->dtp,$this); 因为前面的东西都是没什么实质性的,这个应该很关键了。找到这个函数看看吧。

先看看MakeOneTag函数的参数,前两个参数都是引用传递的,第一个参数是传入DedeTagParse的实例,第二个参数是传入partview的实例。
开始用一个循环获取系统所拥有的所有标签列表
$dh = dir(DEDEINC.'/taglib');
while($filename = $dh->read()){
  if(ereg("\.lib\.",$filename)){
    $alltags[] = str_replace('.lib.php','',$filename);
  }
}
$dh->Close();
代码很简单,就是遍历/include/taglib目录,根据文件规则取文件名,形成一个所有标签的数组。
接下来就是一个大的foreach数组了,遍历在partview类中实例化并解析了当前模板的DedeTagParse的实例的CTags属性,我们通过前面对DedeTagParse的分析知道CTags实际上是模板中所有使用的标签及其参数的集合而已,这里就开始遍历这些模板上的标签进行赋值,替换之类的啦。

我们继续看这个foreach都干了什么。
先获取循环中当前标签的名字。
接下来是针对标签名为field的标签的操作。
如果是field标签的时候,先获取标签的name属性,当名字是array的时候则通过DedeTagParse的Assign方法把partview的Fields数组赋给标签名对应的值属性(详情看Assign的代码,由于比较简单这里略过)。如果标签name属性不是array,则把partview的Fields数组中指定名字的值赋给标签对应的值。下面的else是进行一些其他判断也很简单,然后field标签就解析完了,这样我们就知道了field标签就是相当于变量,此处就是给这些变量赋值,解析完之后,就继续循环分析下个标签了。

接下来的两个if是做标签名字的兼容性了,我们看到arclist有一堆标签名字~

再接下来就是看看模板中的标签是否有对应的系统标签了,如果有,就载入对应的文件,调用对应的函数,把函数返回值赋值给模板标签对应的值。
这样,整个模板的标签就完成赋值了。
至于系统中那些标签(/include/taglib/下的那些标签解析文件)其实就是一个函数,里面读取数据库数据,组织数据,输出而已。
这节就到这里了,主要讲了分析好的模板标签如何绑定最终数据的。其实比较简单,因为模板分析的时候已经得到了当前模板所使用的全部标签,接下来只要遍历标签,调用不同的标签函数,获取函数返回数据就行了。
有些细心的朋友会发现,到这里其实还没有完,数据什么的都得到了,接下来呢?是如何生成静态文件的?
这就是下一节要讲的东西啦。

附:dedecms(v5.6)系统目录
a   /* 生成HTML的目录   */
|data     /* 程序生成常用数据保存目录   */
|     |admin /* 保存系统后台常规配置,例如作者、快速导航、来源,以文本格式存放*/
|     |backupdata /* 数据库备份存放目录,可以在系统后台设置处修改   */
|     |cache   /*   系统缓存 */
|     |enums   /*   联动类别生成的缓存和js文件 */
|     |js     /* 栏目js调用生成的js文件   */
|     |mark /* 图片水印设置目录   */
|     |module /* 系统后台那些模块安装包存放的目录,通常文件名称加密过   */
|     |rss /*   生成RSSmap存放的文件目录 */
|     |sessions /*   系统sessions存放目录,登陆后就会生成个session,目录需可写*/
|     |textdata /*   文本数据,系统后台保存为文本数据存放目录 */
|     |tplcache /*   模板缓存目录,这个缓存一般是那些动态页 */
|     |ziptmp /*   压缩缓存目录 */
|dede /*   系统后台管理目录 */
|     |img
|     |inc
|     |js
|     |templets /*   系统后台的模板存放目录 */
|images
|       |js
|       |swfupload
|       |         |images
|       |         |plugins
|include /*   系统核心类库、函数存放目录 */
|       |calendar /* 日历控件,就是日期编辑框跳出来的那个日历框   */
|       |code /*   datalistcp动态分页类的编码语言包 */
|       |data /*   系统核心设置的数据,比如词库默认验证码 */
|       |dialog /* 系统对话框存放目录,编辑器上面选择的类似于缩略图、插入图片文件*
|       |       |img
|       |FCKeditor /* 编辑器存放目录,用的是开源编辑器FCK   */
|       |         |editor
|       |         |       |css
|       |         |       |   |images
|       |         |       |dialog
|       |         |       |       |common
|       |         |       |       |fck_about
|       |         |       |       |fck_codes
|       |         |       |       |fck_flash
|       |         |       |       |fck_image
|       |         |       |       |fck_link
|       |         |       |dtd
|       |         |       |images
|       |         |       |       |smiley
|       |         |       |js
|       |         |       |lang
|       |         |       |skins
|       |         |       |       |images
|       |inc /* 这里存放一些用才引入的比较长的函数   */
|       |taglib /* 就是那些用在模板中的标签存放的目录了   */
|       |       |channel /*   解析一些特殊字段的扩展函数库 */
|       |       |help /*   基本的标签说明 */
|       |tpllib /*   动态模板标签,一般用在动态调用页面上面的标签 */
|install /* 安装目录 */
|       |images
|       |templates
|member /* 会员中心目录   */
|       |images
|       |        |pay
|       |inc /*   会员中心 */
|       |js
|       |paycenter /*   支付接口配置 */
|       |         |alipay
|       |         |cbpayment
|       |         |nps
|       |         |tenpay
|       |         |yeepay
|       |space /*   会员中心的空间模板 */
|       |     |coffee
|       |     |       |images
|       |     |company
|       |     |       |images
|       |     |flower
|       |     |       |images
|       |     |gray
|       |     |     |images
|       |     |lxblog
|       |     |       |images
|       |     |lxbrown
|       |     |       |images
|       |     |lxvista
|       |     |       |images
|       |     |person
|       |     |       |blue
|       |     |       |common
|       |     |       |       |css
|       |     |       |       |images
|       |     |       |images
|       |     |pwblue
|       |     |       |images
|       |     |pwglight
|       |     |         |images
|       |     |pwlake
|       |     |       |images
|       |     |pwpink
|       |     |       |images
|       |templets
|plus /* 系统插件存放目录   */
|     |guestbook /*   留言板插件 */
|     |         |images
|     |img
|     |   |face
|     |paycenter
|     |         |alipay
|     |         |cbpayment
|     |         |nps
|     |         |tenpay
|     |         |yeepay
|     |task
|special /*   专题存放目录 */
|templets /*   织梦模板存放目录 */
|         |default /* 系统默认模板目录   */
|             |images
|              |       |mood
|              |       |photo
|              |js
|              |style /*   默认模板存放的CSS样式 */
|         |plus /* 插件页面的模板文件存放目录   */
|         |system /*   系统核心底层模板文件夹 */
|         |wap /*   那个wap模块的样式目录了 */
|uploads /*   文件上传存放目录 */
|       |allimg /* 图片   */
|       |flink /* 友情链接图片   */
|       |litimg /*   缩略图 */
|       |media /*   多媒体存放目录 */
|       |soft /*   软件 */
|       |userup /* 用户文件存放,例如头像   */

 

标签de de ag 导航 Google一下
分享到: QQ空间 新浪微博 腾讯微博 人人网
打印 打印 | 关闭 关闭 评论
上一篇:没有了
下一篇:dedecms代码研究06:ParseTemplet算法分析
相关文章
· 查看安全快捷上网技巧
  • · linux 配置PHP环境
  • · 使用phpMyadmin创建数据库及独立数
  • · Apache Rewrite 规则用法详解
  • · 全程指导Linux下PHP环境配置LAMP
  • · Wamp5论坛配置图文教程 php环境配置
  • · 教你IIS6的PHP最佳配置方法
  • · Wamp5 PHP环境配置图解
  • · linux下PHP环境设置
 
图片新闻
  • 美女户外健身, 美翻了美女户外健身, 美翻
  • 真人美女和动漫美女比拼,哪个更漂亮?真人美女和动漫美女
 
站内搜索  
搜索
猜您喜欢  
最新更新  
  • · dedecms代码研究07:MakeOneTag 查看:3753
  • · dedecms代码研究06:ParseTemplet算 查看:2942
  • · dedecms代码研究05:从DedeTagParse 查看:3123
  • · dedecms代码研究04:继续徘徊partvi 查看:3102
  • · dedecms代码研究03:partview的迷惑 查看:2729
  • · dedecms代码研究02:从index开始 查看:2610
  • · dedecms代码研究01:开篇 查看:2371
  • · 使用phpMyadmin创建数据库及独立数 查看:2490
阅读排行  
  • · 全程指导Linux下PHP环境配置LAMP 查看:8761
  • · Wamp5论坛配置图文教程 php环境配置 查看:8352
  • · Wamp5 PHP环境配置图解 查看:7525
  • · linux 配置PHP环境 查看:6236
  • · Apache Rewrite 规则用法详解 查看:5947
  • · php网页生成验证码实现程序 查看:5308
  • · 两款简易的php网页计数器源码 查看:5039
  • · 一个php的分页类(含调用方法) 查看:4792
关于我们 | 联系方式 | 大事记 | 免责声明 | | 给我留言
部分广告源自: 金山联盟和 2345联盟 QQ咨询 站长之家QQ群:232617873
Copyright 2024 远方教程 © All Rights Reserved.

回顶部

深圳SEO优化公司遵义关键词按天计费推荐昭通百度标王哪家好铜仁关键词按天收费哪家好吴忠至尊标王推荐巴中seo排名报价布吉网站优化按天扣费多少钱北海SEO按天计费价格鞍山英文网站建设哪家好延安网络营销亳州如何制作网站多少钱龙岩SEO按效果付费阜新seo网站推广多少钱塔城网络推广公司伊春百度网站优化公司嘉兴seo网站推广报价韶关建站哪家好定西高端网站设计云浮网站优化推广公司坑梓百度竞价报价赤峰百度标王推荐邢台企业网站改版揭阳推广网站哪家好抚顺百姓网标王推广多少钱随州seo网站推广价格呼和浩特模板制作多少钱武威建网站推荐洛阳网络广告推广推荐金昌设计公司网站推荐武威网站优化哪家好萍乡网络广告推广公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化