DEDE CMS排序修改

1、找到"根目录\include\arc.listview.class.php"文件。

2、修改代码:在文件第727行处添加按weight排序判断代码(红色部分为新添加代码)。

//排序方式
$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、再在第778行处找到此段代码

  //如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
     if(preg_match('/hot|click|lastpost|weight/', $orderby))

  并添加红色部分内容。

4、标签调用:

  {dede:list orderby='weight' orderway='asc'}

  这样{dede:list}标签就支持了按权重排序的调用,并且动静态状态下测试均成功!

++==================================================++

5.6之后DEDE加入了文章按权重排序的功能,但很多童鞋调整权重数值,并在arclist标签里加上orderby='weight',却发现无任何效果,原因是系统默认是不开启该功能的。
坛子里有相关的解决方法,需要改arclist.lib.php,才能使用此功能。
其实完全没有必要,正确的使用方法如下:


{dede:arclist titlelen='38' flag='h' noflag='a' isweight='y' orderby='weight'}
    <li><span>[[field:typelink/]]</span><a href="[field:arcurl/]">[field:title/]</a><div class="c2time">[field:pubdate function=MyDate('y-m-d',@me)/]</div></li>
{/dede:arclist}

红色部分就是开启 weight排序,再加上orderby='weight',就OK了


--------------------------------------------------------------------------------


另外很多童鞋使用arclist标签时,想按照权重越大越靠前来排序,则需要小动一下arclist.lib.php文件,方法如下:
打开\include\taglib\arclist.lib.php
大概在572行
$orderWeight = list_sort_by($orderWeight, 'weight', 'asc');
修改为(红色部分)
$orderWeight = list_sort_by($orderWeight, 'weight', 'desc');

就OK了

[本日志由 shao65308 于 2015-05-08 03:55 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 织梦
相关日志:
评论: 0 | 引用: 0 | 查看次数: 5954
发表评论
你没有权限发表评论!