dede排列顺序值如何修改或自定义?

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

核心概念:sortup 字段

在 Dedecms 的数据库中,决定文档排列顺序的关键字段是 sortup

dede 排列顺序值
(图片来源网络,侵删)
  • sortup 字段的含义:它代表一个文档的“置顶”或“排序”权重值。
  • 数据类型:通常是一个整数。
  • 排序规则
    • 数值越大,排序越靠前,这是最核心的原则。
    • sortup 值相同,则按照发布时间 pubdate 降序排列(最新的在前)。
    • sortuppubdate 都相同,则可能按照文章 ID id 降序排列。

sortup 值的常见应用场景

在 Dedecms 后台,你不会直接看到一个名为“sortup”的输入框,而是通过一些功能来间接设置这个值,以下是常见的场景及其对应的 sortup 值:

后台功能/操作 对应的 sortup 效果说明
普通文章 0 默认值,文章按照正常的发布时间顺序排列。
置顶文章 系统设定值,如 10, 99 在后台选择“置顶”后,系统会给该文章一个大于 0 的 sortup 值,这个值越大,置顶的优先级越高,显示越靠前。
推荐/头条 不直接使用 sortup “推荐”或“头条”通常由 flag 字段控制(如 c 代表推荐),它和 sortup 是两个独立的系统,但很多模板会同时调用这两个字段来实现复杂排序。
自定义排序 任意你设定的整数 这是最灵活的用法,你可以手动修改数据库,为不同的文章赋予不同的 sortup 值,从而实现完全自定义的排序,你可以设置 sortup 为 100, 90, 80... 来手动控制文章的显示顺序。

如何在前台模板中调用和排序?

Dedecms 提供了强大的标签(如 {dede:list}{dede:arclist})来调用文章列表,并通过 orderby 属性来指定排序依据。

{dede:list} 标签(用于列表页)

这是最常用的列表标签,其 orderby 属性直接决定了文章的排序方式。

常用 orderby 值:

dede 排列顺序值
(图片来源网络,侵删)
  • orderby='sortup' (最常用)

    • 效果:按照 sortup 值从大到小排序,这是实现“置顶”功能的标准用法。
    • 示例代码
      {dede:list pagesize='10' orderby='sortup'}
          <li>
              <a href="[field:arcurl/]">[field:title/]</a>
              <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
          </li>
      {/dede:list}
    • 说明:使用这个属性,所有 sortup 大于 0 的文章会排在最前面,并且按 sortup 值从大到小排列;sortup 为 0 的普通文章会排在后面,按发布时间排序。
  • orderby='pubdate'

    • 效果:按照发布时间降序排列(最新的在前)。
    • 示例代码
      {dede:list pagesize='10' orderby='pubdate'}
          ...
      {/dede:list}
  • orderby='hot'orderby='click'

    • 效果:按照点击量(热度)降序排列。
    • 注意:需要确保文章有点击量数据,并且后台开启了统计功能。
  • orderby='id'

    dede 排列顺序值
    (图片来源网络,侵删)
    • 效果:按照文章 ID 降序排列(通常是最后发布的文章 ID 最大,所以效果和 pubdate 类似)。

{dede:arclist} 标签(用于首页、频道页等)

arclist 功能更强大,orderby 的选项更多,并且可以组合使用。

常用 orderby 值:

  • orderby='sortup':同上,按 sortup 值排序。
  • orderby='hot':按点击量排序。
  • orderby='pubdate':按发布时间排序。
  • orderby='weight':按权重排序(这个权重是后台手动设置的,与 sortup 不同,更灵活)。
  • orderby='rand':随机排序。

orderby 的组合使用:

arclist 可以用空格分隔多个排序条件,系统会按顺序进行排序。

示例:先按 sortup 排序,sortup 相同的再按发布时间排序

{dede:arclist titlelen='30' orderby='sortup pubdate' row='10'}
    <a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}

示例:先按权重排序,权重相同的再按点击量排序

{dede:arclist titlelen='30' orderby='weight hot' row='10'}
    ...
{/dede:arclist}

总结与实践

  1. 实现“置顶”功能

    • 后台:在发布或编辑文章时,勾选“置顶”选项,这会自动给文章的 sortup 字段设置一个高值(如 99)。
    • 前台:在列表页模板中使用 {dede:list orderby='sortup'}{dede:arclist orderby='sortup'}
  2. 实现“自定义排序”

    • 后台:直接登录数据库管理工具(如 phpMyAdmin),找到 dede_archives 表,手动修改你想要排序的文章的 sortup 值,将 A 文章设为 100,B 文章设为 90。
    • 前台:同样使用 {dede:list orderby='sortup'},A 文章就会显示在 B 文章前面。
  3. 实现“按权重/推荐”排序

    • 后台:给文章设置“推荐”属性(flag 字段),或者手动设置“权重”值(如果模板支持)。
    • 前台:使用 {dede:arclist orderby='weight'}{dede:arclist orderby='flag'} 来调用。

关键点回顾

  • 核心字段sortup
  • 排序原则sortup 值越大,越靠前。
  • 后台操作:通过“置顶”功能间接设置 sortup 值,或直接修改数据库。
  • 前台调用:使用 {dede:list}{dede:arclist} 标签的 orderby='sortup' 属性来应用排序规则。

理解了 sortup 字段和 orderby 属性的配合使用,你就可以灵活地控制 Dedecms 网站上几乎所有列表内容的显示顺序了。

-- 展开阅读全文 --
头像
C语言listen函数如何正确使用与参数设置?
« 上一篇 今天
C语言writecmd如何实现?
下一篇 » 今天

相关文章

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

目录[+]