找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1215|回复: 0

[分享] 织梦的文章列表按权重排序

[复制链接]
发表于 2018-2-7 10:09:58 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用:

{dede:arclist row='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:arclist}

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

{dede:list pagesize='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:list}

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

  1. else if($orderby=="weight") {$ordersql = " order by arc.weight $orderWay"; }
复制代码

成为这样:

  1.   //排序方式
  2.   $ordersql = '';
  3.   if($orderby=="senddate" || $orderby=="id") {
  4.    $ordersql=" order by arc.id $orderWay";
  5.   }
  6.   else if($orderby=="hot" || $orderby=="click") {
  7.    $ordersql = " order by arc.click $orderWay";
  8.   }
  9.   else if($orderby=="lastpost") {
  10.    $ordersql = "  order by arc.lastpost $orderWay";
  11.   }
  12.   else if($orderby=="weight") {
  13.    $ordersql = "  order by arc.weight $orderWay";
  14.   }
  15.   else {
  16.    $ordersql=" order by arc.sortrank $orderWay";
  17.   }
复制代码

继续查找:

  1. if(ereg('hot|click|lastpost',$orderby))
复制代码

语句,修改为:

  1. if(ereg('hot|click|weight|lastpost',$orderby))
复制代码

修改完成后,保存,如果目标里面已经使用了weight排序,生成一下,就可以看到,文档列表已经安装weight排序
后记:进行了上面的修改,可以实现按照权重weight排序,但是,如果不在模板中写明orderway=”asc”,无法实现权重越小越靠前,

解决方案1:

{dede:list pagesize='10' orderby='weight' orderway='asc'} ?[field:textlink/]<br/> {/dede:list}

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

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

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

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

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

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-1-10 09:40 , Processed in 0.043641 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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