当前位置: 首页 > PHPCMS&织梦dedeCMS > 正文

织梦DedeCMS文章自定义排序(按weight权重值)修改方法

DedeCMS文章排序方式orderby='',默认值是 senddate 按发布时间排列,也可以按点击数、文章ID、评论数排列。但有时我们做文章排名,需要指定第一名到第三名在前面的自定义排序,织梦程序默认不能实现。这是我们就需要结合权重排序,修改下程序文件就可以完美支持,方法如下:

文章列表标签 dede:arclist 按权重排序的修改方法

1、找到 include\taglib 目录下的 arclist.lib.php 文件,大约在170行的位置,我们发现 arclist解析函数里是否需要weight权重排序,默认为”N”。

$isweight='N' 修改 $isweight='Y'

2、大约在327行的位置,我们发现“文档排序的方式”,默认没有weight权重排序的sql语句。于是我们需要在

  else $ordersql = " ORDER BY arc.sortrank $orderWay";

前添加以下SQL语句,支持weight权重排序

  else if($orderby == 'weight') $ordersql = "  order by arc.weight $orderWay"; //权重排序

3、修改模版使用按weight权重

  {dede:arclist orderby="weight" orderway="asc"}
    底层标签
  {/dede:arclist}

列表页标签 dede:list 按权重排序的修改方法

1、找到根目录 “\include\arc.listview.class.php” 文件。
2、修改排序方式sql代码:在文件第760行左右,是排序方式控制sql语句,如下:

    //排序方式
    $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";
    }

修改添加按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、再在大约第810行处找到此段代码

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

修改添加按weight标签筛选

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

4、修改模版使用按weight权重

    {dede:list pagesize="20" orderby="weight" orderway="asc"}
        底层标签
    {/dede:list}

通过上面两种方法的修改,织梦DedeCMS文章实现按weight权重值自定义排序,并且动静态状态下测试均成功!

织梦DedeCMS文章自定义排序(按weight权重值)修改方法:等您来吐槽!