织梦专题视图类构造函数__construct($starttime=0)源码分析教程

admin2020-01-211089

所在文件:arc.specview.class.php

实际上这个构造函数是比较简单的,当然,前提是你研究过多个织梦系统的构造函数,这里我就把专题视图类的构造函数大体做了什么解释一下,然后,再分析代码这样在大体掌握构造函数后,再去研究代码,这样学习效果会更好的。

这个构造函数一次实例化了四个对象,二个模板引擎,一个栏目链接和一个频道模型单元。要注意的是在实例化频道模型单类时的第一个参数是-1,因为,专题在频道模型表#@__channeltype里面的id就是-1 ,实例化栏目类的时候,把参数设置为0,这样的结果是并没有查询任何东西,只是把栏目相关参数初始化了一下。

接下来全局参数的值的设置,这几乎是每个类初始化时的设置。

设置模板:

$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/list_spec.htm";

设置模板的目的是为了下面的载入这个织梦模板。

代码:

$ctag = $this->dtp->GetTag("page");

这行代码的意思是获取标记为“page”的标记对象的字符串。

实际上这个是一个织梦的bug,正确的应当是$this->dtp->GetTag("list"), 为什么是因为,在模板list_spec.htm 里面根本不存在在标记page,从下面的代码可以看出,是从这个标记里面获取值的,所以,只有这个专题的块标签里面才有这个pagesize,所以,这个是lsit,而不是page 。

最后一行代码:$this->TotalPage = ceil($this->TotalResult/$this->PageSize);实际上上面全是为了这行代码,$this->TotalResult是通过专题类里面的方法$this->CountRecord();得到的总记录数,而pagesize则是通过 上面的实例化后的模板引擎,载入模板,分析模板后,通过$this->dtp->GetTag("list")获得的。

所以,上面的代码除都是为了获得这这个总的分页数而服务,也就是说这个构造函数主要是为了分页而初始化的构造函数。


网友评论