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'}

 

时间: 2024-10-24 09:31:29

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

dedecms 列表页文章有缩略图则显示缩略图,无则不显示图片

不少用织梦建站朋友想实现这个功能,有时候未必偏偏文章都会配有图片,所以就想实现有缩略图则显示缩略图,无则不显示图片. 可以按照下面这个方法修改实现. 编辑打开/templets/default/list_article.htm (这是默认模板) 搜索下面这段代码 1  代码如下 复制代码  [field:array runphp教程='yes']@me = (empty(@me['litpic']) ? "" : "<a class="preview"

dedecms列表调用文章正文内容方法

  在制作织梦模板的时候,有的时候我们需要调用文章部分内容,用[field:description/]标签字数不够多(数据库设计字段是varchar(255)的),另外修改了文章内容但是摘要还需要手动修改,所以只能调用文章正文内容了.       实现织梦DedeCMS列表页调用文章正文的方法有两种,不过都是使用的dede:arclist标签,如果使用dede:list标签的话,第一种方法是调用不出结果的. 以下是织梦DedeCMS列表页调用文章正文的第一种方法:    代码如下 复制代码  {

织梦dedecms列表页调用所有顶级栏目文章的方法

这几天用织梦做网站,发现了很多问题. 当我们在文章也和文章列表页使用文章调用标签dede:arclist 不限制栏目ID的时候就只会调用当前栏目下的文章,如果是要调用整站的文章发现使用typeid='1,2,3,4,5,6,7,8,9,10' 这样调用出来所有ID的话,当栏目ID很多的话就有些麻烦了!那怎么样可以直接调用织梦CMS整站的文章标签呢 方法一: {dede:arclist row='条数' typeid='all'  orderby='pubdate'}[field:title/]{

dedecms列表页title优化方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 齐毛鸭在使用dedecms时发现,每一个栏目的列表页的title是不能直接优化的.举个例子,某栏目的名字是"文学天地",但在title中我们不希望是"文学天地",而是"西北文学-西北诗歌-西部文学"这样经过优化的title.在dedecms中新建栏目时候,keywords和discr

DedeCms列表页利用内置函数调用当前文档tag的方法

在列表页调用当前文档tag标签虽然还没有现成的标签可以用,但是,dedecms 中却有这种调用方式的函数. 位于/include/common.func.php教程文件内的以下代码:          先看一下函数原型   function gettags($aid) { global $dsql; $tags = ''; $query = "select tag from `#@__taglist` where aid='$aid' "; $dsql->execute('tag

dede:list orderby=weight 按权重排序无效问题

找到list解析文件include/arc.listview.class.php  发现排序规则里面并没有按照weight排序的判断,于是乎修改程序加入排序规则  代码如下 复制代码 //排序方式   $ordersql = '';   if($orderby=="senddate" || $orderby=="id") {    $ordersql=" order by arc.id $orderWay";   }   else if($ord

新浪微博粉丝列表页的粉丝如何排序?

粉丝列表页面的粉丝是根据粉丝关注您的时间先后顺序进行排序的,粉丝顺序无法更改. 通过粉丝列表页可以查看粉丝与您的关系,和对方关注您的方式.

dedecms列表页与详情调用tag标签同时带上链接

方法一,直接在模板中加php 这里以默认模板为例,打开 /templets/default/list_article.htm 找到: 代码如下:  <small>好评:</small>[field:scores/]  在后面加上如下代码: 代码如下:  <small>标签:</small>  代码如下 复制代码 [field:id runphp='yes'] global $cfg_cmspath; $tags = GetTags(@me); $revalu

织梦cms利用weight排序无效的解决方法

涉及的文件是includetaglibarclist.lib.php文件: 第570行左右:  代码如下 复制代码 if ( $isweight=='y' ) 这一行代码简直是废柴,$orderWeight = list_sort_by($orderWeight, 'weight', 'asc');  对结果进行排序. 这个是有问题的,因为在得到这个$orderWeight之前,检索文档表的语句为:  代码如下 复制代码 SELECT arc.*,tp.typedir,tp.typename,t