织梦视图类构造函数__construct($typeid=0,$needtypelink=TRUE)源码分析

admin2020-01-19850

视图类是织梦静态模板里面用到的比较多的一个类,在静态模板引擎里面有二种显示数据的方式:一种是直接显示数据,这个有点像动态模板引擎只是二者对模板的处理方式不一样;一种是生成html后显示,这个动态模板引擎里面没有这个,这个是静态模板引擎独有的,之所以,叫静态模板引擎,很大原因就是生成静态网页。

这个视图类包含了织梦模板引擎这二种特性,即可以通过这个类,生成html静态网页,又可以像动态模板引擎一样显示,非常经典的应用就是在织梦系统入口文件index.php里面的应用,还有织梦手机版入口文件的应用。

所以,这个视图类构造函数就是为生成html或直接显示数据进行初始化,要生成内容就要用到栏目表信息,因为,要显示内容一是直接显示栏目内容,一是显示文档内容,而文档内容都是属性某一栏目的,所以,无论如何必须知道栏目资料,程序才能进行下一步操作。

源码分析教程开始:

参数:第一个参数是栏目id,这个默认是0,第二个是是否需要栏目连接。

把栏目id,就是参数传过来的id赋给当前栏目id,然后,设置超全局变量dsql,并赋给当前数据库对象。

接下来就是设置静态模板引擎了,进行实例化,然后,设置命名空间。

重新指定引入的对象:$this->dtp->SetRefObj($this);这个在类中使用静态模板引擎后,就要引入这行代码,这个不好理解,这个指的是当我们把这个视图类实例化$newdtp=new partview(1),这行代码的作用就重新载入$newdtp对象。

$this->ftp = &$ftp;这个用于远程设置。

若需要栏目连接,那么,就要实例化栏目连接类,这个我们在分析栏目链接构造函数时已经分析了,栏目链接类实例化后,得到的是一个包含所有栏目字段和模型表中一部分字段,然后,对这些记录进行遍历,把字段值作为数组键把字段值作为数组值。

实际上这个视图类也跟文档类构造函数等其它构造函数一样,也是组装$this->fields, 由于使用这个类目的不一样,生成的这个字段也不一样,这里我就以织梦入口文件首页显示为例子,打印一下这个数组:

  array(
            [TypeID] => 0
            [baseDir] => D:/wamp/www
            [modDir] => /templets
            [indexUrl] => http://www.dedebase.com/
            [indexName] => 首页
            [TypeInfos] =>
            [SplitSymbol] =>  >
            [valuePosition] =>
            [valuePositionName] =>
            [OptionArrayList] =>
        )

接下来的代码就是设置一些全局参数的值和环境变量。

网友评论