dede:arclist orderby=weight dedecms列表页文章按权重排序无效问题

  平时我们有时会发现dedecms列表页文章按权重排序无效问题,找到list解析文件include/arc.listview.class.ph,发现排序规则里面并没有按照weight排序的判断,于是乎修改程序加入排序规则,大概在771行,加入下面红色代码

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

  同时修改条件,在812行左右,加入|weight参数

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

  有的朋友反映说改了不能用,再改一个地方:/include/taglib/arclist.lib.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 == 'weight') $ordersql = "  ORDER BY arc.weight $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"; 

  arclist 对weight的排序也不准确,在模板调用时,需要加上一个isweight的属性,如下红色代码

{dede:arclist typeid='32' pagesize='20' isweight='Y' orderby='weight' orderway='asc'}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏kevindroid

room的使用-以demo为例

51930
来自专栏JavaEdge

2018-08-24

函数可以嵌入在sql中使用的,可以在select中调用 存储过程要让sql的query 可以执行, 需要把 mysql_real_connect 的最后一个参...

7020
来自专栏坚毅的PHP

mysql数据迁移hbase问题

无法直接dump,写了java多线程程序做迁移 问题1:Operation not allowed after ResultSet closed 裸jdbc语句...

41050
来自专栏杨建荣的学习笔记

简单实用的sql小技巧(第二篇)(r3笔记第86天)

ASCII和CHR 在平时的工作中,可能会在sql或者pl/sql块中嵌入特殊字符,比如空格,回车之类。这个时候可以使用ascii和chr来做字符和ascii码...

31480
来自专栏人工智能LeadAI

深度学习之主流数据库 | MySQL基础

这篇文章主要是讲一下常见的MySQL的安装,和基本操作。适合完全没有MySQL知识但是又急需一些MySQL知识的童靴作为快速入门使用。 背景与安装 背景不用多说...

55460
来自专栏闻道于事

Oracle数据库(三)表操作,连接查询,分页

复制表 --复制表 create table new_table as select * from Product --复制表结构不要数据 create tab...

38280
来自专栏Phoenix的Android之旅

Java 单例的五种写法

单例的目的是为了保证某个类只实例化一个对象。对于我们来说,理解这些单例写法的不同点,最好的方法是明白他们在什么情况下会失效。

15210
来自专栏chenssy

【死磕Sharding-jdbc】---group by结果合并(1)

在sharding-jdbc源码之结果合并中已经分析了OrderByStreamResultSetMerger、LimitDecoratorResultSetM...

13520
来自专栏张善友的专栏

使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据

我们经常有这样的需求,批量的删除或者选取大量的数据,有非常多的Id值,经常使用in条件查询,如果你使用拼接字符串的方式,可能遭遇SQL语句的长度限制4000个字...

29390
来自专栏杨建荣的学习笔记

MySQL和Oracle对比之存储过程(r5笔记第7天)

昨天晚上帮一个朋友处理了一个关于存储过程的问题,他需要迁移一些Oracle中的存储过程到MySQL中来,但是改了一部分的程序,发现MySQL中没法编译了,报了很...

35750

扫码关注云+社区

领取腾讯云代金券