织梦列表页文章排序功能应用场景比较多,如果只是按推荐排序的话,并不一定能够满足需求,如果能按照指定的权重大小进行排序,将重要的产品优先排列,则是一种比较实用的方式。实现这个功能,需要修改织梦系统的系统文件。
1、找到"根目录\include\arc.listview.class.php"文件。
2、修改代码:搜索“排序方式”,大概在文件第750行处添加按weight排序判断代码:
else if($orderby=="weight") {
$ordersql = " ORDER BY arc.weight $orderWay";
}
//排序方式 $ordersql = ''; if($orderby=="senddate" || $orderby=="id") { $ordersql=" ORDER BY arc.id $orderWay"; } else if($orderby=="hot" || $orderby=="click") { $ordersql = " ORDER BY arc.click $orderWay"; } else if($orderby=="lastpost") { $ordersql = " ORDER BY arc.lastpost $orderWay"; } /**按文章权重排序**/ else if($orderby=="weight") { $ordersql = " ORDER BY arc.weight $orderWay"; } else { $ordersql=" ORDER BY arc.sortrank $orderWay"; }
3、再在大概第800行处找到此段代码添加:|weight
//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
if(preg_match('/hot|click|lastpost|weight/', $orderby))
其实从上面的代码中,我们还可以看出其他的排序方式:hot(热门文章),click(文章点击数),lastpost(发布时间),可以根据自己的业务场景需要选择合适的排序方式。
4、标签调用:
{dede:list orderby='weight' orderway='asc' pagesize='12'}
这样{dede:list}标签就支持了按权重排序的调用,并且动静态状态下测试均成功!