DeDeCMS二次开发教程之静态页面生成流程

静态页面的生成

index.php文件

在index.php中一旦get传递一个upcache变量或者是文件index.html不存在时候,就开发生成静态文件。
然后执行如下代码:

    require_once (dirname(__FILE__) . "/include/common.inc.php");
    require_once DEDEINC."/arc.partview.class.php";

    $GLOBALS['_arclistEnv'] = 'index';
    $row = $dsql->GetOne("Select * From `#@__homepageset`");
    $row['templet'] = MfTemplet($row['templet']);
    $pv = new PartView();
    $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
    $row['showmod'] = isset($row['showmod'])? $row['showmod'] : 0;

    if ($row['showmod'] == 1)
    {
        $pv->SaveToHtml(dirname(__FILE__).'/index.html');
        include(dirname(__FILE__).'/index.html');
        exit();
    } else { 
        $pv->Display();
        exit();
    }

引入common.inc.php文件

1.定义错误报告级别

2.定义系统常量

如根目录以及include、data等目录名

3.判断是否禁用了自动注册全局变量

4.检查和注册外部提交的变量

主要是过滤一些变量,如cfg_或者是globals开头的变量。

5.判断是否开启了mb_string扩展库。

如是否可以使用mb_substr、iconv_substr分别代替使用substr、iconv。

6.如果没有开启magic_quotes_gpc自动过滤post、get、cookie中的数据,则调用函数过滤

7.系统相关变量检测

8.Session保存路径设置

9.引入系统配置参数(data/config.cache.inc.php)

10.如果有上传文件,对上传文件进行相应的处理

11.引入数据库配置文件

12.载入系统验证安全配置

require_once(DEDEDATA."/config.cache.inc.php");

13.Session跨域设置

14.时区设置

date_default_timezone_set

15.定义一下文件目录变量

16.文档的默认命名规则

17.定义特殊全局变量

18.对全局分页传递参数进行过滤

19.设定缓存配置信息

20.自动加载类库处理

phpcms自动加载类,仍然使用的是__autoload函数

21.引入数据库类

if ($GLOBALS['cfg_mysql_type'] == 'mysqli' && function_exists("mysqli_init"))
{
    require_once(DEDEINC.'/dedesqli.class.php');
} else {
    require_once(DEDEINC.'/dedesql.class.php');
}

22.引入全局常用函数

require_once(DEDEINC.'/common.func.php');

在查看common.func.php代码可以发现,在该文件中又引入了扩展函数文件include/extend.func.php。

23.引入模块MVC框架需要的控制器和模型基类

require_once(DEDEINC.'/control.class.php');
require_once(DEDEINC.'/model.class.php');

24.引入data/helper.inc.php,调用helper函数,导入include/helpers文件夹下面的一些工具类

引入/include/arc.partview.class.php文件

在arc.partview.class.php文件中进行如下操作

引入/include/channelunit.class.php

引入/include/dedetag.class.php

其中定义了标签类(DedeTag)、标签解析类(DedeTagParse)、属性类(DedeAttribute)、属性解析类(DedeAttributeParse)

引入/include/channelunit.func.php

定义一些数组,做映射

定义频道模型单元类(ChannelUnit)

引入/include/typelink.class.php

在typelink.class.php文件中进行了如下操作:

引入/include/channelunit.func.php

引入/include/ftp.class.php

在该文件中定了定义FTP 操作类(FTP)

定义了视图类(PartView)

定义全局变量_arclistEnv

$GLOBALS['_arclistEnv'] = 'index';

获取#@__homepageset表中第一条数据,并进行相应的过滤

$row = $dsql->GetOne("Select * From `#@__homepageset`");
    $row['templet'] = MfTemplet($row['templet']);

实例化视图类PartView

在构造函数里面,初始化了一些了变量。

接下来流程

简单说就是设置模板路径,加载生成html文件。

设置模板

调用了PartView对象的SetTemplet方法。在该方法中,调用了DedeTagParse对象的LoadTemplet或者LoadSource方法加载模板。然后在调用PartView对象的ParseTemplet方法进行解析。

—–待续——-

你可能感兴趣的:(dedecms,静态文件生成流程)