• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    DEDECMS织梦自定义文章排序
    POST TIME:2020-04-22 17:47
    上次做个站要求文章自定义排序,网上找了下,有结果不过不完整,特记录了下来,与大家分离
    标签dede:arclist的排序是通过orderby来指定的,如下:
    {dede:arclistorderby=’排序字段’}
    {/dede:arclist}
    orderby=’sortrank’文档排序方式
    §orderby=’hot’或orderby=’click’表示按点击数排列
    §orderby=’sortrank’或orderby=’pubdate’按出版时间排列
    §orderby=’near’
    §orderby==’lastpost’按最后评论时间
    §orderby==’scores’按得分排序
    §orderby=’id’按文章ID排序
    §orderby=’rand’随机获得指定条件的文档列表

    而能给orderby赋值的只能是上面列出的值,也就是说dede:arclist标签只能按照上面列出的字段排序。
    那怎样才能按照自定义的字段排序呢?假如我现在在dede_archives表里面添加了一个字段orderid,

    我想按照这个字段排序。直接这样写:{dede:arclistorderby=’orderid’}是不行的。那应该怎样修改?

    一、数据库操作:
    用MYSQL的管理工具或者其他,修改dede_archives表结构,添加一列orderid字段

    二、修改后台文件
    1、打开dede/article_add.php//修改代码文件
    把187-191行,修改为以下代码:
    $query=”INSERTINTO`dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
    color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,orderid)
    VALUES(‘$arcID’,'$typeid’,'$typeid2′,’$sortrank’,'$flag’,'$ismake’,'$channelid’,'$arcrank’,'$click’,'$money’,
    ‘$title’,'$shorttitle’,'$color’,'$writer’,'$source’,'$litpic’,'$pubdate’,'$senddate’,
    ‘$adminid’,'$notpost’,'$description’,'$keywords’,'$filename’,'$adminid’,'$orderid’);”;
    2、打开dede/article_edit.php//修改代码文件
    在191行的dutyadmin=’$adminid’之后加逗号,
    回车换行加入下面代码:orderid=’$orderid’
    3、打开dede/templets/article_add.htm//修改模板文件
    4、打开dede/include/arc.listview.class.php
    找到600行
    把if(ereg('hot|click|lastpost',$orderby))改为if(ereg('hot|click|lastpost|orderid',$orderby))
    找到134行,回车增加一行,加入以下代码:
    <tablewidth=”800″border=”0″cellspacing=”0″cellpadding=”0″>
    <tr>
    <tdwidth=”90″style=”color:#F00″>排序权重:</td>
    <tdcolspan=”3″><inputtype=’text’name=’orderid’value=’0′style=’width:100px;’/>(请填写数字,越大越靠前)</td>
    </tr>
    </table>
    4、打开dede/templets/article_edit.html//修改模板文件
    到131行,回车增加一行,加入以下代码:
    <tablewidth=”800″border=”0″cellspacing=”0″cellpadding=”0″>
    <tr>
    <tdwidth=”90″style=”color:#F00″>排序权重:</td>
    <tdcolspan=”3″><inputtype=’text’name=’orderid’value=’<?phpecho$arcRow["orderid"]?>’style=’width:100px;’/>(请填写数字,越大越靠前)</td>
    <td></td>
    </tr>
    </table>
    PS:第3、4步骤是照顾不太会HTML语言的新手们的,如果你是老手可以自己决定添加位置。

    三、前台文件操作:
    1、打开include/arc.listview.class.php//修改代码文件
    到558行,回车增加一行,加入以下代码:
    elseif($orderby==”orderid”){
    $ordersql=”orderbyarc.orderid$orderWay”;//orderid为dede_archives表里面自己添加的字段
    }
    2、打开include/taglib/arclist.lib.php//修改代码文件
    到233行,回车增加一行,加入以下代码:
    elseif($orderby==’orderid’)$ordersql=”orderbyarc.orderid$orderWay,arc.id$orderWay”;
    这样就能实现自定义字段的操作了,UTF-8版也可以类似修改即可。

    四、HTML模板调用如下:
    {dede:arclisttypeid=’2′row=’11′titlelen=’42′orderby=’orderid’orderway=’desc’}
    ……………..
    {/dede:arclist}

    以上是跟版网提供的方法,通过此方法顺利实现想要的结果,完全可行,如果您也需要,可以一试。

    原文http://hi.baidu.com/xlpu/blog/item/7c840c377a7c77d1a2cc2b0a.html

    经过个人测试此方法确实可以,不过这些都要改到程序让很多不懂程序的站长很为难。还有一种方法可以不用改程序实现排序的方法。
    在编辑文章的时候的高级参数里有个文章排序,可以通过这个功能实现排序,先置顶的会排在后置顶的后面,这样就实现排序了。
    前面介绍的是给DEDE标签arclist增加排序功能。现在介绍一下给织梦list标签增加自定义排序的功能。

    自定义排序的字段是我们在后台模型中增加的。其中涉及的文件还是上面有提到的arc.listview.class.php文件。在arc.listview.class.php文件中找到约558行处,回车换行加上以下代码
    elseif($orderby=="paixu"){
    $ordersql="orderbypaixu$orderWay";//paixu为自定义排序字段
    }
    然后找到约597行,将代码
    //如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
    if(ereg('hot|click|lastpost',$orderby))改成
    //如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
    if(ereg('hot|click|lastpost|paixu',$orderby))
    在前台调用使用以下方式
    {dede:listpagesize='5'orderby='paixu'orderway='asc'}
    ……………………
    {/dede:list}

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!