• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    织梦dedecms使用weight排序无效的解决方法

    发布者: 涵韵 | 发布时间: 2025-7-24 17:13| 查看数: 74| 评论数: 0|帖子模式

            本文实例讲述了织梦dedecms使用weight排序无效的解决方法。分享给大家供大家参考。具体方法如下:
            dedecms5.7针对weight排序是有bug的,这里就来一步步告诉大家如何解决weight无效的解决办法。
            涉及的文件是includetaglibarclist.lib.php文件,在第570行左右:
             

                            复制代码        代码如下:        if ( $isweight=='y')         
            这一行代码简直是废柴,
                            复制代码        代码如下:        $orderWeight = list_sort_by($orderWeight,'weight', 'asc');对结果进行排序,这个是有问题的,因为在得到这个$orderWeight之前,检索文档表的语句为:

                            复制代码        代码如下:        SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath 
            FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id WHERE arc.typeid IN (29) AND 
            arc.arcrank > -1 ORDER BY arc.sortrank DESC
    很明显了吧,我们在写标签的时候,写的是:

                            复制代码        代码如下:        {dede:arclist orderby='weight' typeid='29' isweight='y' 
            limit='4,1' titlelen='100' infolen='100' }
    本意是数据按照weight进行排序,而处理程序是按照sortrank 检索的数据库,指定 isweight='y' 仅仅是起到了将检索出的数据集再根据weight排序。         
            所以处理办法非常简单:在该程序文件330行处,增加一行按照weight排序的处理语句:
             

                            复制代码        代码如下:        else if($orderby =='weight') $ordersql = " order by arc.weight asc";         
            我们再分离一个让list标签支持weight排序:
                            复制代码        代码如下:        {dede:list pagesize='10' titlelen='50' orderby='weight'} ?[field:textlink/]
    {/dede:list}         
            解决方法:
            1、打开文件arc.listview.class.php
            2、查找
                            复制代码        代码如下:        else if($orderby=="lastpost") {语句,大概在609行,在此行前面按下回车健,插入如下语句:

                            复制代码        代码如下:        else if($orderby=="weight") { $ordersql = " order by arc.weight $orderWay"; }
    3、继续查找
                            复制代码        代码如下:        if(ereg('hot|click|lastpost',$orderby))语句,修改为:

                            复制代码        代码如下:        if(ereg('hot|click|weight|lastpost',$orderby))         
            修改完成后,保存,如果目标里面已经使用了weight排序,生成一下,就可以看到,文档列表已经安装weight排序
            4、模板调用:
                            复制代码        代码如下:        {dede:arclist row='10' titlelen='50' orderby='weight'} ?[field:textlink/]
    {/dede:arclist}         
            希望本文所述对大家的dedecms网站建设有所帮助。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表