织梦二次开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 791|回复: 0

[共用功能] 织梦网站栏目管理“预览”功能分析下篇

[复制链接]

1046

主题

1109

帖子

5334

积分

超级版主

Rank: 8Rank: 8

金币
256
贡献
3959
发表于 2015-5-29 11:47:29 | 显示全部楼层 |阅读模式
本帖最后由 dedebase 于 2015-5-29 12:05 编辑

  紧接上篇教程

  5.if($tinfos['issystem']==-1)又用一个条件判断,也就是我们上一步刚查询出来的issystem,若issystem=-1说明是单表独立模型,例如,分类信息模型,否则为系统模型,例如,商品模型,文章模型等,这二个类型由于数据库表设计不同,所以,织梦官方把这二个类型的模型在显示时用了二个不同的类分别处理。

这二个类文件分别是:单表独立模型为arc.sglistview.class.php,系统模型为arc.listview.class.php。

  因为,我们以“文章模型”即系统模型,所以,我们只需要看else后面的代码,其实,这二个的处理大同小异,只要会一种其它,就自然会了。

  在else后面,首先引入   
  1. include(DEDEINC."/arc.listview.class.php");
复制代码
然后,实例化  $lv = new ListView($tid);然后,来了一个条件判断
  1. if( $cfg_ml->M_Rank < $lv->Fields['corank'] )
复制代码
这个判断是判断浏览者的权限是不是大于这个栏目设置的权限,即corank字段的值。

  在织梦里面不仅内容页可以设置游览权限,而且栏目也可以设置浏览权限,如下图所示。

4.png

  若设置的栏目浏览权限,若用户权限小于栏目权限则显示下面的错误信息,错误信息模板为/templets/plus/view_msg_catalog.htm 。

  6. 有错则显示错误,然后,显示内容。代码如下:
  1.   if($lv->IsError) ParamError();$lv->Display();
复制代码

  其实,文件list.php我们可以完全简化一下代码,如果我们只是系统模型,那么,我们可以把list.php里面的代码简化成如下图所示代码。

5.png

  我们可以实验一下,当我们把栏目设为有权限才可以浏览。假设我们把“网页基础”这个栏目下面的子栏目"html",设置为注册用户才可以浏览。如下图所示。
6.png

  然后,我们再点击“预览”如下图所示。

7.png

  得到结果如下图所示。

aaaaaaaaa.png

  7.$lv->Display()这句很重要,是用来显示的,就是我们在浏览器看到的内容,就是这个功能,这个功能没有什么好说的,就是用来显示内容的,但是里面关联到了关于模板的重点。

  我们在templets/default文件夹下面,会看到一些看上去没有什么处理的模板文件类似:频道名称_default.htm ,例如index_default.htm,list_default等,每个模型每个封面,列表,内容页都有对应的这样的模板,这是做什么的呢?

  这些模板文件实际上是,例如,当$lv->Display()调用封模板时,如果没有找到封页模板,那么,程序就会调用这些默认模板,作为自己模板,我们测试一下。

  例如,我们把封面模板index_article.htm删掉,然后“预览”一下“网页基础”,但是,仍然可以正常显示,但是,如果我们把index_default.htm改一下名称或删掉。结果,就会显示:   

http://www.dedebase.com/templets/default/index_default.htm Not Found!

  看后面的Not Found! 没有找到index_default.htm,从这个错误页面我们就知道了,这些类似index_default.htm的默认模板是做什么的了吧。

  这一过程是如何实现的呢?程序为什么能自动去找这些类似index_default.htm模板呢?这个功能的实现在类文件arc.listview.class.php里面,里面有一个函数Display(),再接着找到DisplayPartTemplets()这个函数,在这个函数里面有一个判断,代码如下:
  1.            if(!file_exists($tempfile))
  2.             {
  3.                 $tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm";
  4.             }
复制代码

  判断封面模板存在吗,不存在则调用  index_default.htm 这个模板。其它,默认模板则跟这个几乎完全一样处理的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-9-17 21:04 , Processed in 0.262696 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表