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 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【编程基础】C++ Primer快速入门之七:运算符

一、表达式的定义 什么是表达式?表达式,是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合(1)。1 + 2是个...

3014
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.1 js基本语法

js不需要像C语言一样显式的指定具体类型,如int,double等,统一使用var关键字声明变量。

570
来自专栏一英里广度一英寸深度的学习

Python 传值还是传引用

如果 node =None,相当于node指向一个不可变对象,在调用insert函数时,仅传值。

923
来自专栏数据结构与算法

26:字符串最大跨距

26:字符串最大跨距 总时间限制: 1000ms 内存限制: 65536kB描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过...

3648
来自专栏python 实践经验

python面试题目解析--iterator考察点和list考察点

为什么会是这个结果呢? 我们首选需要了解Python的一个循环机制:Python中的for循环实质是一个迭代器iterator,它不断调用next方法返回下一...

1263
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.1 js基本语法

1. var b=true;//定义布尔变量b,并赋值为true,js注释与C/C++完全相同,此处不详述

862
来自专栏C语言及其他语言

【蓝桥杯系列】第一节 C的基本用法

置顶编程范收获更多热门编程快讯 大家好,最近很多小伙伴向我反应小编!我参加了蓝桥杯但是我连那是什么都不知道,我该怎么训练?是不是在网站刷题就可以啊? 在这里我要...

3097
来自专栏C语言及其他语言

C语言逆向之表达式短路分析及应用

大家在学习C语言过程中,可能会见到过一些这样的题,就是表达式短路,表达式短路主要体现在C语言中逻辑运算符&&和||。今天将对表达式短路的做逆向分析,来深入理解它...

1774
来自专栏数据小魔方

左右用R右手Python9——字符串合并与拆分

在文本处理和数据清洗阶段,对字符串或者字符型变量进行分割、提取或者合并虽然谈不上什么高频需求,但是往往也对很重要的。 接下来跟大家大致盘点一下在R语言与Pyh...

3215
来自专栏xingoo, 一个梦想做发明家的程序员

图解闭包

说到 闭包 ,这是js不得不提的一个特性,很多传统语言都不具备这样的特性,比如JAVA C等等。 之前看书的时候,总是理解不好什么是闭包!下面就通过手绘一张...

1826

扫描关注云+社区