DedeCMS可以设置列表第一页跟其它页使用不同模板吗?

2019-09-19 10:55发布

像设置网站列表的第一页与分页的模板不一样,这个可以设置么,如何设置呢?

1条回答
从不后悔
1楼 · 2019-09-19 11:50.采纳回答

我也是在网上查的,步骤是这样的:

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

$this->ParseTempletsFirst();

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

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

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


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

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

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

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

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


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

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

修改为:

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

这样系统就会自动去获取当前内容模型列表页模板后面加了 2 的模板


查看更多