搜索

dedecms5.7织梦文章、商品按权重排序的方法(正序、倒序均可)

2019-10-14 11:32| 发布者: happyxp| 查看: 1914| 评论: 0

摘要: 在dedecms5.7中,文章和商品默认是按照更新顺序排序,如果你想按照权重排序的话,默认是无法实现的,需要修改一下代码。但是,你想实现的效果,总可以通过其他不修改代码的方式实现。比如说你想让某几篇文章或者商品 ...
在dedecms5.7中,文章和商品默认是按照更新顺序排序,如果你想按照权重排序的话,默认是无法实现的,需要修改一下代码。
但是,你想实现的效果,总可以通过其他不修改代码的方式实现。比如说你想让某几篇文章或者商品置顶并按照一定的顺序排序,你可以通过置顶的方式实现。
1、在文件活产品编辑页面点击高级参数,有个文档排序,然后选择置顶时间,就可以将你需要的文章或者商品置顶排在最上面。
2、文章或产品显示顺序。dede中默认排序是按照修改时间最新排在最上面,按照这个思路,只需要把你想排序的文章按照倒叙点开编辑,保存一下即可。比如1、2、3排序,先编辑保存3然后在2、1。
即可达到置顶和按照一定顺序排列的需求,如果你执着于权重排序,请继续往下看。

首先要记住权重排序的标签是:orderby=‘weight’
1、{dede:arclist} 修改方法:DEDE 5.7 首页【arclist】增加按权重排序
  在织梦系统中找到以下目录\include\taglib中的arclist.lib.php文件并打开;
  大约在170行找到

[代码]php代码:

$innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='', $pagesize=0, $isweight='N')
把这里的$isweight='N'改为$isweight='Y'
  大约在340行上面找到

[代码]php代码:

    //文档排序的方式
    $ordersql = '';
    if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY arc.click $orderWay";
    else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " ORDER BY arc.sortrank $orderWay";
    else if($orderby == 'id') $ordersql = "  ORDER BY arc.id $orderWay";
    else if($orderby == 'near') $ordersql = " ORDER BY ABS(arc.id - ".$arcid.")";
    else if($orderby == 'lastpost') $ordersql = "  ORDER BY arc.lastpost $orderWay";
    else if($orderby == 'scores') $ordersql = "  ORDER BY arc.scores $orderWay";
    //功能:增加按好评数和差评数调用
    else if($orderby == 'goodpost') $ordersql = " order by arc.goodpost $orderWay";
    else if($orderby == 'badpost') $ordersql = " order by arc.badpost $orderWay";
    else if($orderby == 'rand') $ordersql = "  ORDER BY rand()";
    else $ordersql = " ORDER BY arc.sortrank $orderWay";
改为

[代码]php代码:

    //文档排序的方式
    $ordersql = '';
    if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY arc.click $orderWay";
    else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " ORDER BY arc.sortrank $orderWay";
    else if($orderby == 'id') $ordersql = " ORDER BY arc.id $orderWay";
    else if($orderby == 'near') $ordersql = " ORDER BY ABS(arc.id - ".$arcid.")";
    else if($orderby == 'lastpost') $ordersql = " ORDER BY arc.lastpost $orderWay";
    else if($orderby == 'scores') $ordersql = " ORDER BY arc.scores $orderWay";
    else if($orderby == 'rand') $ordersql = " ORDER BY rand()";
    else if($orderby == 'weight') $ordersql = " order by arc.weight asc";//如果没有特定设置排序则按照权重先排序
    else $ordersql = " ORDER BY arc.sortrank $orderWay";
然后我们就可以在首页使用orderby='weight’进行排序了
  列表页使用orderby='weight’
2、{dede:list} 标签方法:如果列表页(即list标签)也想使用该种排序,还需要修改arc.listview.class.php文件,该文件在include目录下:
  第一步:先找到:

[代码]php代码:

        //排序方式
        $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 {
            $ordersql=" ORDER BY arc.sortrank $orderWay";
        }
改为

[代码]php代码:

        //排序方式
        $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";
        }
第二步:搜索“if(preg_match('/hot|click|lastpost/', $orderby))”,位置大概在812行,在该句的lastpost后加上“|weight”,即“if(preg_match('/hot|click|lastpost|weight/', $orderby))”,到此arc.listview.class.php文件就修改完了
  如何倒序
  列表页因为有第一篇文章显示在最后一位的特性,所以我们可能会使用倒序排列才能让想要显示的文章在最前面,那么标签应该这样写“{dede:list orderby='weight' orderway='asc'}”

路过

雷人

握手

鲜花

鸡蛋
本站文章如无特殊说明均为 虾皮社区 原创,可无偿使用和传播,欢迎转载分享!
转载请注明本文地址:
如有文章侵犯了您的权利,请联系本站站长,我们将在第一时间删除相关内容,谢谢!

虾皮社区,成立十年了!

站长自己也搞不懂想做个什么,反正就是一直在努力的做!

Copyright © 2007-2024 xp6.org Powered by Discuz

QQ|Archiver|手机版|小黑屋|虾皮社区 |网站地图
返回顶部