dede list 按权重排序

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

后台直接修改(最简单,推荐给普通用户)

这是最直接、最安全的方法,不需要修改任何代码,只需要在后台进行设置。

dede list 按权重排序
(图片来源网络,侵删)
  1. 进入后台:登录您的 DedeCMS 后台管理系统。
  2. 找到栏目:在左侧菜单中,进入「内容管理」 -> 「栏目管理」。
  3. 选择栏目:找到您想要按权重排序的那个列表页对应的栏目,点击后面的「更改」按钮。
  4. 设置排序规则
    • 在栏目编辑页面,向下滚动找到「列表选项」或「高级选项」区域(不同版本位置可能略有不同)。
    • 找到「列表排序方式」这个下拉菜单。
    • 在下拉菜单中,选择「按权重排序」。
    • (可选)如果需要,可以在它旁边的「排序方式」中选择「降序」(即权重大的在前)或「升序」(权重小的在前),通常选择「降序」。
  5. 保存:点击页面底部的「确定」或「保存」按钮。

优点

  • 无需代码,操作简单。
  • 安全,不会破坏系统文件。
  • 效果立竿见影。

缺点

  • 每个栏目都需要单独设置。

修改 arc.listview.class.php 文件(通用方法,推荐给开发者)

如果您希望所有栏目或特定类型的栏目都默认按权重排序,或者需要更灵活的控制,可以修改核心文件。(修改前务必备份原文件!)

  1. 找到文件: 在您的网站根目录下,找到文件:/include/arc.listview.class.php

    dede list 按权重排序
    (图片来源网络,侵删)
  2. 编辑文件: 使用任何代码编辑器(如 VS Code, Sublime Text, Dreamweaver)打开这个文件。

  3. 定位代码: 按快捷键 Ctrl + F 搜索 orderby 关键字,您会找到类似这样的代码段(可能因版本不同而略有差异):

    // ... 其他代码 ...
    if($this->ChannelUnit->ChannelInfos['isdefault'] == -1)
    {
        $orders = array('id', 'pubdate', 'senddate', 'click', 'lastpost', 'postnum');
    }
    else
    {
        $orders = array('id', 'sortrank', 'pubdate', 'click', 'lastpost', 'postnum');
    }
    // ... 其他代码 ...
  4. 修改排序规则数组: 您需要将 weight(或 sortrank,在较新版本中权重字段对应的数据库字段名是 weight,但系统内部可能仍用 sortrank 指代)添加到 $orders 数组的最前面,以实现优先排序。

    修改前(示例)

    $orders = array('id', 'sortrank', 'pubdate', 'click', 'lastpost', 'postnum');

    修改后(示例)

    // 将 'sortrank' 移到数组最前面,并确保它存在
    $orders = array('sortrank', 'id', 'pubdate', 'click', 'lastpost', 'postnum');

    重要提示

    • 在很多 DedeCMS 版本中,sortrank 字段就是用来存储权重的,请确保您的 dede_archives 表中有 sortrank 字段。
    • 如果您的版本明确使用 weight 字段,并且系统配置如此,那么您可能需要搜索 weight,但 sortrank 是更通用的做法。
    • sortrank 放在数组首位,表示在后台没有指定其他排序方式时,系统会默认优先按 sortrank(权重)排序。
  5. 保存文件: 保存您修改后的 arc.listview.class.php 文件,并覆盖服务器上的原文件。

  6. 更新缓存: 到后台「系统」 -> 「一键更新网站」 -> 「更新缓存」,确保新设置生效。

优点

  • 一劳永逸,所有栏目列表页都会遵循此规则。
  • 适合需要统一管理的网站。

缺点

  • 需要修改核心文件,有一定风险(操作失误可能导致网站错误)。
  • 升级 DedeCMS 时,此修改可能会被覆盖。

修改模板文件 {dede:list} 标签(灵活控制,推荐给高级用户)

如果您只想在特定的列表页按权重排序,而不影响其他页面,可以直接在模板文件中修改 {dede:list}

  1. 找到模板文件: 进入后台「模板」 -> 「默认模板管理」,找到您要修改的列表页对应的模板文件(通常是 list_栏目ID.htm)。

  2. 修改标签: 在模板文件中,找到 {dede:list} 标签,默认情况下它可能是这样的:

    {dede:list pagesize='20'}

    在这个标签中添加 orderbyorderway 属性。

    {dede:list orderby='weight' orderway='desc' pagesize='20'}

    参数解释

    • orderby='weight':指定按权重字段排序,在某些旧版本中,您可能需要使用 orderby='sortrank'
    • orderway='desc':指定排序方式为“降序”,即权重值大的排在前面,如果需要权重值小的排在前面,则改为 orderway='asc'
  3. 保存并更新: 保存模板文件,然后到后台「生成」 -> 「更新栏目HTML」或「一键更新网站」,重新生成该列表页。

优点

  • 灵活性最高,可以针对不同栏目使用不同的排序规则。
  • 不修改核心PHP文件,相对安全。

缺点

  • 需要为每个需要特殊排序的列表页单独修改模板。

总结与建议

方法 优点 缺点 适用场景
后台设置 简单、安全、快速 需逐个栏目设置 普通用户,临时性或少量栏目的需求。
修改核心文件 一劳永逸,全局生效 有风险,升级可能覆盖 网站开发者/管理员,需要全站统一按权重排序。
修改模板标签 灵活,按需控制 需修改模板,逐一生成 高级用户,不同栏目需要不同排序规则的复杂网站。

对于绝大多数用户,推荐首选【方法一:后台设置】,因为它最简单且无风险,如果需求是全局性的,再考虑【方法二】,只有在需要非常精细的控制时,才使用【方法三】。

-- 展开阅读全文 --
头像
织梦弹出式注册登录模板如何高效集成与优化?
« 上一篇 01-09
东南大学-c 语言程序设计》
下一篇 » 01-09
取消
微信二维码
支付宝二维码