织梦 dedecms weight list orderby
返回首页
当前位置: 上社主页 > 上社站长 > 站长手稿 >

让dedecms(织梦)的list标签支持weight排序

时间:2011-11-09 16:39来源:上社原创 作者:上社站长 点击:
DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用: {dede:arclist row = '10' titlelen = '50' orderby = 'weight' } [field:textlink/] br / {/dede:arclist} 其中的orderby='weight'就实现了文档按照权重排序了。

 DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用:


  1. {dede:arclist row='10' titlelen='50' orderby='weight'
  2. •[field:textlink/]<br/> 
  3. {/dede:arclist} 

其中的orderby='weight'就实现了文档按照权重排序了。这是arclist标签,可以用在任何位置来调用文档列表,然而,在栏目列表页,如果你要使用list标签(实现文档列表分页),也想用权重(weight)排序,


  1. {dede:list pagesize='10' titlelen='50' orderby='weight'
  2. •[field:textlink/]<br/> 
  3. {/dede:list} 

你会发现,你的列表并没有按照权重(weight)排序,无论你怎么修改,它的顺序就还是老样子!经过多次测试,上社站长发现原来dedecms织梦对权重weight排序的支持仅arclist标签,并不支持list标签,因此,上社站长就开始了对dedecms织梦系统的改造,让它支持list标签权重weight排序,改造的文件主要是include目录下的arc.list.class.php文件,打开文件,查找“else if($orderby=="lastpost") {”语句,大概在609行,在此行前面按下回车健,插入如下语句:


  1. else if($orderby=="weight") { 
  2.     $ordersql = " order by arc.weight $orderWay"

继续查找“if(ereg('hot|click|lastpost',$orderby))”语句,修改为:


  1. if(ereg('hot|click|weight|lastpost',$orderby)) 

 修改完成后,保存,如果目标里面已经使用了weight排序,生成一下,就可以看到,文档列表已经安装weight排序,效果可查看http://www.kxss.net/kxssweb/kxssIT/页面。

 

后记:

进行了上面的修改,可以实现按照权重weight排序,但是,如果不再模板中写明orderway="asc",无法实现权重越小越靠前,解决方案1:


  1. {dede:list pagesize='10' orderby='weight' orderway='asc'
  2. •[field:textlink/]<br/> 
  3. {/dede:list} 

要实现越重越大越靠前,只需要将上述代码中的“orderway='asc'”去掉就可以了。究其深层原因,是arc.list.class.php文件中,576行:


  1. $imgwidth=120,$imgheight=90,$listtype="all",
  2. $orderby="default",$innertext="",$tablewidth="100",
  3. $ismake=1,$orderWay='desc'

默认排序方式是降序排列,而非升序,考虑其它常用排序,如puddate等,此处不要修改的好。

(责任编辑:上社站长)
分享到:
顶一下
(5)
83.3%
踩一下
(1)
16.7%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片
推荐内容