DedeCMS织梦

DedeCMS织梦列表第一页跟其它页使用不同模板

阿里云

有时候我们需要让织梦列表页的第一页跟第二页以及后面的页面的展示效果不同,使用不同的模板,但是目前网上也没有其他比较好的方案,那么下面织梦学习网就给大家介绍一个最简单的办法,通过修改文件来为栏目列表页第一页单独指定一个模板,其余页面则调用另一个模板。具体修改的文件以及代码如下:

1、找到并打开 include/arc.listview.class.php 文件,在里面大约第 304 行的位置找到 Display 函数,找到如下代码:

也想出现在这里?联系我们
创客主机
  1. $this->ParseTempletsFirst();

在这句代码的上面添加以下代码:

  1. if($this->PageNo>1){
  2.  $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].
  3. "/".$GLOBALS['cfg_df_style']."/list_article2.htm";
  4.  $this->dtp->LoadTemplate($tempfile);
  5. }

上面的代码是判断当列表页数大于 1 时,织梦就会调用 list_article2.htm 来作为当前列表页模板了。

2、添加以上代码后,在动态浏览栏目时已经能够成功实现了,但会生成栏目静态 HTML 页后,仍然不能正常调用,还需要继续修改。我们继续在 include/arc.listview.class.php 文件里面找到如下代码:

  1. $this->ParseDMFields($this->PageNo,1);

在这句代码的上面添加以下代码:

  1. if($this->PageNo>1){
  2.   $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']
  3. ."/".$GLOBALS['cfg_df_style']."/list_article2.htm";
  4.   $this->dtp->LoadTemplate($tempfile);
  5.   $this->ParseTempletsFirst();
  6. }

修改到这里之后无论是静态页还是动态页都能达到理想的效果了。

3、但是如果多个内容模型使用了多个列表页的模板,那么每个内容模型的栏目列表页的第二页都会用 list_article2.htm 来作为模板,这样我们需要进行修改,将第 1 步跟第 2 步里面的下面这段代码:

  1. $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']
  2. ."/".$GLOBALS['cfg_df_style']."/list_article2.htm";

修改为:

  1. $tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];
  2. $tempfile = str_replace("{tid}",$this->TypeID,$this->Fields['templist']);
  3. $tempfile = str_replace("{cid}",$this->ChannelUnit->ChannelInfos['nid'],$tempfile);
  4. $tempfile = $tmpdir."/".$tempfile;
  5. $tmpfile2 = substr($tempfile,0,-4);
  6. $tempfile = $tmpfile2."2.htm";

这样系统就会自动去获取当前内容模型列表页模板后面加了 2 的模板,例如图集列表页的第一页的模板是 list_image.htm,那么图集第二页的模板就是 list_image2.htm 了,这样就方便多了。

DedeCMS 织梦列表第一页跟其它页使用不同模板

已有 416 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!