织梦建站方便快捷,但有时候我们经常会遇到一些小问题,比如有些时候我们需要使列表页的首页跟第二页以及后面的页面的样式不同,修改dede:list标签又很难达到理想的效果,今天就为大家介绍一个最简单的办法,就是为首页单独指定一个模板页,其余页面则调用另一个模板页。
具体修改的文件以及代码如下:
1、打开include目录下的arc.listview.class.php文件,找到Display函数(大约在397行),找到如下代码:
1 | $this ->ParseTempletsFirst(); |
在这句代码的上方添加如下代码:
1 2 3 4 | 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文件里面找到如下代码:
1 | $this ->ParseDMFields( $this ->PageNo,1); |
在这句代码的上面添加以下代码:
1 2 3 4 5 | 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步里面的下面这段代码:
1 | $tempfile = $GLOBALS [ 'cfg_basedir' ]. $GLOBALS [ 'cfg_templets_dir' ]. "/" . $GLOBALS [ 'cfg_df_style' ]. "/list_article2.htm" ; |
修改为:
1 2 3 4 5 6 | $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的模板,例如图集列表页的第一页的模板是list_image.htm,那么图集第二页的模板就是list_image2.htm了,这样,就方便多了。
2017年03月31日 11:16 沙发
这样改后是不是所有的列表页,都要按照这个第一页为1超过为2模板来生成?
能不能修改成没有2的模板的时候,自动按1模板生成?
2017年04月01日 09:22 1层
@新手 最简单的方法就是,复制1模板重命名为2模板,就可以了,不用再去修改任何代码。
2017年05月10日 18:32 板凳
是这样的,列表页 /栏目/index.html 和 /栏目/list_1_1.html 这两个页是这一样的。请问是否能改成
/栏目/index.html 就这个页是 不同的模板,其它如 /栏目/list_1_1.html 开始是用另一个模板呢?
2017年05月11日 08:49 1层
@simonceo 你这里列表页相当于频道页,用频道页模板就行了。