织梦文档列表类构造函数__construct($typeid, $uppage=1)详解

admin2020-01-18979

这个文档列表构造函数比会员列表视图类构造函数复杂很多,但是,比文档类构造函数要稍微简单,不过在所有类中也是相当复杂的构造函数了,不过再怎么复杂,咱们只要知道它是做什么的,就不怕它复杂,研究代码就是这样,就像破案似的,只要抓住一个线索顺藤摸瓜,就把案件理清楚,只要理清楚了,理解起来就非常容易了。

织梦基础做教程绝不会只为了分析代码而分析,既然,我们要研究织梦系统,就要弄明白它的来龙去脉,既知其然,更要知其所以然,织梦基地不会像网上的教程那样,只告诉你如何做,但是,极少的教程告诉你为什么这样做?

如果解决问题的话,这样可以,但是,对于研究织梦系统的朋友来说,这个跟没有说差不多,这也是织梦基地建立这个站的一个很大原因。当然,由于一个一个的函数毕竟是独立的东西,所以,有时候必须结合实例才能知道为什么这样,这个织梦基地以后,会做很多实例,只有多用几次,才能真正掌握。

代码分析开始:

这个构造函数有二个参数,一个是栏目id,一个是上一页,因为,这个类就是一个文档分页的,肯定要用到分页,所以,这里有这么一个上一页参数。

下面的代码:

image.png

这一大段就是初始化,比较简单,要提的是这里的数据库对象用的是一个取地址,这个比较少用一般直接都把对象赋值:

$this->dsql = &$dsql;

然后,下面就是实例化静态模板引擎,二次实例化,注意区别:二次设置的命名空间不一样。然后,实例化一个栏目连接类,看到这里就知道这个构造函数有多复杂,所以,我们平常写构造函数可以参考织梦系统的构造函数,只要把织梦系统的这样复杂的构造函数都能弄明白了,那么,其它简单的构造函数还不是非常简单。

这里面的这段代码:

        if(!is_array($this->TypeLink->TypeInfos))
        {
            $this->IsError = true;
        }

非常重要,这个就是上面实例化栏目类的原因,因为,分页是在栏目列表进行的,如果连这个栏目都不存在的话,还谈什么分页,皮之不存,毛将焉附?这就是为什么这里要判断一下这个栏目是不是存在,如何判断呢,很简单,这个其实又用到了栏目连接构造函数了,只要判断一下构造函数生成的$this->TypeLink->TypeInfos是不是一个数组即可。

若$this->IsError=flase 则,说明这个栏目存在,栏目存在就可以处理这个分页了。从这里也可以看出这个文档列表类构造函数就是处理栏目的分页的,这个从下面的代码就可以知道。

实例化频道模型类,这个类的参数是通过栏目对象获得的:

参数$this->TypeLink->TypeInfos['channeltype']

下面就是组装本构造函数的目标数组$this->fields。

把栏目所有的字段赋给$this->Fields :

$this->Fields = $this->TypeLink->TypeInfos;

把栏目id,当前位置,标题写入数组$this->Fields里面。

设置一些全局参数的值:

把数组$GLOBALS['PubFields']里面的值,写到数组$this->Fields 里面,然后,设置全局环境变量。

下面一大段是获得交叉栏目id,这段代码我们在教程“织梦获得指定类目的URL链接函数GetTypeUrl()”里面已经详细分析了交叉栏目id,这里就不用多解释了,如果不会请,参考这个教程。

总结:其实,这个文档分类构造函数主要就是为了获得$this->Fields数组,打印一下这个数组,得到如下内容:

 [Fields] => Array
        (
            [id] => 1
            [reid] => 0
            [topid] => 0
            [sortrank] => 0
            [typename] => 网页基础
            [typedir] => {cmspath}/a/webbase
            [isdefault] => 1
            [defaultname] => index.html
            [issend] => 1
            [channeltype] => 1
            [maxpage] => -1
            [ispart] => 1
            [corank] => 0
            [tempindex] => default/index_article.htm
            [templist] => default/list_article.htm
            [temparticle] => default/article_article.htm
            [namerule] => {typedir}/{Y}/{M}{D}/{aid}.html
            [namerule2] => {typedir}/list_{tid}_{page}.html
            [modname] => default
            [description] =>
            [keywords] =>
            [seotitle] =>
            [moresite] => 0
            [sitepath] =>
            [siteurl] =>
            [ishidden] => 0
            [cross] => 0
            [crossid] =>
            [content] =>
            [smalltypes] =>
            [ctypename] => 网页基础
            [addtable] => dede_addonarticle
            [issystem] => 1
            [position] => 主页 > 网页基础 >
            [title] => 网页基础
            [phpurl] => /plus
            [indexurl] => /
            [templeturl] => /templets
            [memberurl] => /member
            [specurl] => /special
            [indexname] => 主页
            [templetdef] => /templets/default
            [rsslink] => /data/rss/1.xml
            [typeid] => 1
        )


网友评论