上次,我们从dedecms的index.PHP文件中了解到了很多信息,也提出了一些问题:

1)加载了/include/common.inc.php,里面做了哪些工作?

2)/include/arc.partview.class.php到底是干什么的,/include/下还有很多arc开头的文件都是干什么的?

3)MfTemplet这个函数到底对模板文件路径这个字符串做了什么操作?

4)partview类的相关方法都有什么秘密?

本文开始就带着前面的问题,继续我们的dedecms之旅吧。

我们就先来看看common.inc.php里面都有什么吧

//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
define('DEDEINC', str_replace("\\", '/', dirname(__FILE__) ) );
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC,0,-8) ) );
define('DEDEDATA', DEDEROOT.'/data');
define('DEDEMEMBER', DEDEROOT.'/member');
define('DEDETEMPLATE', DEDEROOT.'/templets');
。。。。。。。。。。。。。。。。。。。。。。
define('DEDEMODEL', './model');
define('DEDECONTROL', './control');
define('DEDEAPPTPL', './templates'); //系统配置参数
require_once(DEDEDATA."/config.cache.inc.php"); //数据库配置文件
require_once(DEDEDATA.'/common.inc.php');

打开/include/common.inc.php里面的注释已经说地比较清楚了。我们大概说说结构。

先是定义一堆常量。然后是做一些安全措施,对PHP的系统环境进行一些设置,代码里面的注释已经写地很清楚了。

接下来是把dedecms的系统配置参数文件包含进来:require_once(DEDEDATA."/config.cache.inc.php");

看文件名字,我们猜测这个配置文件可能是数据库里面的配置信息的缓存。

接下来加载了数据库配置信息文件:require_once(DEDEDATA.'/common.inc.php');

这个文件,不是根据数据库中信息生成的缓存,而是dedecms安装的时候生成的。前一篇文章我们说过index.php文件开始,检测dedecms是否安装,就是看这个文件是否存在的。

再接下来,整理了很多目录,比如:站点根目录、模板目录,插件目录、数据目录等,还整理了很多变量。最后加载了数据库操作类dedesql.class.php和常用函数文件common.func.php

嗯,common.inc.php的谜底揭开,里面没什么好玩的东西啦,都是最基本的东西。

接下来我们就得看看arc.partview.class.php吧,这里面可是dedecms关键呢

加载了channelunit.class.php,typelink.class.php,ftp.class.php

下面就是partview类的定义啦

因为index.php中使用partview类的SetTemplet方法SaveToHtml方法,所以,我们为了能更简单地深入,就从这两个方法着手。

我们先看看partview的构造函数。

创建了一个DedeTagParse类的实例,看名字是标签解析类哦。然后设置了几个参数。

接下来,new了一个TypeLink类,设置了一堆参数。搞的很云里雾里的。

一、看看SetTemplet吧。啊,这个还算简单。

① 使用DedeTagParse类的LoadTemplet方法载入模板。

② 设置一些Fields数组的元素

③ 调用ParseTemplet方法。
ParseTemplet方法里面弄了一堆$GLOBALS数组的元素,然后调用了MakeOneTag函数。费解啊

二、再看看SaveToHtml方法吧
前面就是建目录,最后用DedeTagParse的SaveTo方法保存到文件。

呃~不给力啊。

只能回头想想,都看到了什么~

嗯,为了能生成首页,搞了个很搞不懂的partview类,然后里面调用了貌似万能的DedeTagParse方法,解析模板,生成静态文件。

仅此而已。

里面还夹杂了其他函数和类,但不管怎么样这个DedeTagParse是重点,下次得重点分析了。

今天就到这吧,鸟儿的~太乱了,一点章法都没有

dedecms代码研究三的更多相关文章

  1. dedecms代码研究二

    dedecms代码研究(2)从index开始现在继续,今天讲的主要是dedecms的入口代码.先打开index.PHP看看里面是什么吧.打开根目录下的index.php嗯映入眼帘的是一个if语句.检查 ...

  2. dedecms代码研究七

    简单回顾一下,前面我们首页动态文件index.PHP调用arc.partview.class.php来初始化首页模板 arc.partview.class.php通过SetTemplet调用DedeT ...

  3. dedecms代码研究六

    今天讲的是dedecms最关键的东西,模板分析啦.也就是dedetag.class.php 里面的ParseTemplet方法 模板解析方法 先看看一个dedecms标签,大家心里有个数: {dede ...

  4. dedecms代码研究五

    上一次留几个疑问: 1)DedeTagParse类LoadTemplet方法. 2)MakeOneTag到底在搞什么. 从DedeTagParse开始前面,我们一直在dedecms的外围,被各种全局变 ...

  5. dedecms代码研究四

    partview php文件之前,我们像掉进沼泽一样,看到无尽的变量,数组元素,莫名其面的东西摆在我们面前.今天,我们继续艰难前行,想办法走出partview类的泥潭.上一篇,我们胡乱分析了partv ...

  6. dedecms代码研究一

    dedecms相信大家一定都知道这个cms系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他cms系统比较难模仿的的东西,这个东 ...

  7. (转)dedecms代码详解 很全面

    dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他 ...

  8. dedecms代码详解 很全面

    dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他 ...

  9. 一段markdown编辑器代码研究

    一段markdown编辑器代码研究 说明 代码在 https://github.com/dukeofharen/markdown-editor 之所以选择这个来分析是一方面是因为它的代码结构比较简单, ...

随机推荐

  1. IOS演变史

    我是从iOS5开始接触iPhone操作系统,对此系统也算是有爱有恨,今天从网上整理以下整个iOS发展的历史,了解了解也算做以后闲时讨论的一个话题. 电脑需要操作系统,手机也需要,2007年,苹果带着旗 ...

  2. OC之160728

    NSData与NSMutableData:代表数据缓冲区有两个作用,将数据读入NSData和输出NSData数据 输出 将字符串写入指定文件 用NSFileManager:为创建,删除,移动,复制文件 ...

  3. qgroundcontrol开发环境搭建源码编译

    qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...

  4. mysql表分区(摘自 MySQL表的四种分区类型)

    一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  5. OD调试篇9

    渐渐地要用比较高明一点的方法去破解软件了 那好,看看今天的程序先 先载入 测试下程序 发现这是一个未注册版本的程序,注册也不让注册,注册就跳出You have rntered an invalid   ...

  6. Python 基礎 - 數據類型

    標準數據類型 Python3 中有六個標準的數據類型 1 Number(數字) 2 String(字符串) 3 List (列表) 4 Tuple (元組) 5 Sets (集合) 6 Diction ...

  7. jquery.cookie() 方法的使用(读取、写入、删除)

    一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. ...

  8. 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏

    C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...

  9. 黑马程序员——JAVA基础之网络编程

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 网络编程 网络模型:OSI参考模型和TCP/IP参考模型 网络通讯三要素: IP地址:InetA ...

  10. pelican-python install

    参考: http://www.cnblogs.com/ballwql/p/pelican.html 写的原因是,我的安装环境与原作者的安装过程有不一样的地方,所有总结一下. 本文将从以下几个方面进行描 ...