dede文章按权重排序

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

使用DedeCMS后台的“自定义排序”功能(最简单)

这是最直接、最推荐的方法,无需修改代码,适用于大多数情况。

dede文章按权重排序
(图片来源网络,侵删)

操作步骤:

  1. 进入文章列表管理: 登录你的DedeCMS后台,找到「内容管理」 -> 「所有文档管理」。

  2. 选择文章并排序

    • 在文章列表页面,你会看到每篇文章前面都有一个复选框。
    • 勾选 你想要进行排序的单篇文章,或者点击列表顶部的「全选」来选择所有文章。
    • 勾选后,点击列表上方的「自定义排序」按钮。
  3. 设置权重值: 点击「自定义排序」后,会弹出一个对话框,在「自定义权重值」输入框中,为你勾选的文章设置一个数字。

    dede文章按权重排序
    (图片来源网络,侵删)
    • 数字越大,权重越高,排序越靠前。
    • 你可以为不同的文章设置不同的权重值,比如置顶的文章设置为100,普通重要文章设置为50,普通文章设置为10或不设置。
    • 设置完成后,点击「确定」。
  4. 查看效果: 保存后,刷新文章列表页面,你会发现,文章已经按照你设置的权重值从高到低重新排列了。

优点

  • 无需修改任何代码,操作简单直观。
  • 可以灵活地为单个或批量文章设置权重。

缺点

  • 这种排序只在后台的「所有文档管理」列表中有效。
  • 它不会改变前台栏目页或首页的默认排序方式,前台默认仍然按时间排序。

修改模板文件,让前台按权重排序(最常用)

如果你希望网站前台的栏目页、首页等地方的文章也按照权重排序,就需要修改对应的模板文件。

dede文章按权重排序
(图片来源网络,侵删)

核心原理: DedeCMS的列表页是通过调用 arclistlist 标签来获取文章的,我们只需要在这些标签中加入一个按权重排序的参数即可。

操作步骤:

  1. 找到模板文件

    • 栏目页:模板文件通常位于 /templets/你的栏目目录/ list_artlist.htm 或类似路径,你可以通过「模板」->「模板管理」->「自定义模板」来找到并编辑当前栏目使用的列表模板。
    • 首页/其他页面:找到调用该栏目文章的模板文件,index.htm
  2. 修改 arclistlist: 在你的模板文件中,找到获取文章列表的标签,

    {dede:arclist typeid='1' titlelen='30' row='10'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}

    在这个标签里,添加一个 orderby='weight' 参数,如果需要降序排列(权重高的在前),再加上 orderway='desc'

    修改后的代码示例:

    {dede:arclist typeid='1' titlelen='30' row='10' orderby='weight' orderway='desc'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}

    参数解释

    • orderby='weight':指定排序依据为 weight(权重)字段。
    • orderway='desc':指定排序方式为 desc(降序,即从大到小),如果你想让权重低的排在前面,可以改为 orderway='asc'(升序)。
  3. 更新缓存: 修改模板文件后,务必进入后台「系统」->「一键更新网站」,选择「更新HTML」->「更新栏目页」和「更新主页」,然后生成一下页面,才能看到效果。

优点

  • 可以完全控制前台文章的显示顺序。
  • 是实现前台按权重排序的标准方法。

缺点

  • 需要修改模板文件,对新手有一定门槛。
  • 如果网站使用了多个模板,需要逐一修改。

修改PHP核心文件(不推荐,仅限高级用户)

警告:此方法会修改DedeCMS的核心文件,升级系统时这些修改会被覆盖,可能导致网站出现问题。除非你非常清楚自己在做什么,否则请谨慎使用。

操作步骤:

  1. 找到文件: 打开 include/arc.listview.class.php 文件,这个文件是处理列表页数据逻辑的核心文件。

  2. 修改排序代码: 在这个文件中,找到构建SQL查询语句的部分,通常会有一个 order by 语句。 搜索类似 orderby == 'hot'orderby == 'click' 的代码块,找到处理不同排序方式的逻辑。

    你需要找到处理默认排序(通常是按时间 pubdate)的代码,并将其修改为默认按 weight 排序。

    你可能会找到这样的代码:

    if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY click $orderway";
    else $ordersql = " ORDER BY id $orderway";

    你可以将其修改为:

    // 默认按权重排序
    if($orderby=='hot' || $orderby=='click') {
        $ordersql = " ORDER BY click $orderway";
    } else {
        // 如果没有指定 orderby,或者指定了其他值,默认按 weight 排序
        $ordersql = " ORDER BY weight $orderway";
    }

    或者更直接,将所有默认排序都指向 weight

    // 强制所有列表页都按权重排序
    $ordersql = " ORDER BY weight $orderway";
  3. 更新缓存: 修改文件后,同样需要通过「一键更新网站」来生成页面。

优点

  • 一劳永逸,无需每次都修改模板。

缺点

  • 修改核心文件,有极高的风险。
  • 系统升级后修改会丢失。
  • 可能会影响其他依赖原排序逻辑的功能。

总结与建议

方法 难度 适用场景 优点 缺点
后台自定义排序 ⭐ (非常简单) 仅需在后台管理文章顺序 操作简单,无风险 不影响前台显示
修改模板标签 ⭐⭐ (中等) 需要前台页面按权重排序 标准、安全、灵活 需要修改模板文件
修改核心文件 ⭐⭐⭐⭐⭐ (非常难) 需要全局、强制改变默认排序 一劳永逸 风险极高,不推荐

给你的建议:

  • 如果你只是想在后台方便地管理文章的排列顺序,请使用方法一
  • 如果你希望网站前台的栏目页或首页也按照权重来展示文章,请使用方法二,这是最常用且最安全的方式。
  • 请尽量远离方法三,除非你是在进行深度二次开发,并且做好了版本控制和升级预案。
-- 展开阅读全文 --
头像
织梦如何调用子栏目的文章?
« 上一篇 03-06
织梦模板集团源码,安全还是隐患?
下一篇 » 03-06

相关文章

取消
微信二维码
支付宝二维码