核心概念:sortup 字段
在 Dedecms 的数据库中,决定文档排列顺序的关键字段是 sortup。

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

(图片来源网络,侵删)
-
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'
(图片来源网络,侵删)- 效果:按照文章 ID 降序排列(通常是最后发布的文章 ID 最大,所以效果和
pubdate类似)。
- 效果:按照文章 ID 降序排列(通常是最后发布的文章 ID 最大,所以效果和
{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}
总结与实践
-
实现“置顶”功能:
- 后台:在发布或编辑文章时,勾选“置顶”选项,这会自动给文章的
sortup字段设置一个高值(如 99)。 - 前台:在列表页模板中使用
{dede:list orderby='sortup'}或{dede:arclist orderby='sortup'}。
- 后台:在发布或编辑文章时,勾选“置顶”选项,这会自动给文章的
-
实现“自定义排序”:
- 后台:直接登录数据库管理工具(如 phpMyAdmin),找到
dede_archives表,手动修改你想要排序的文章的sortup值,将 A 文章设为 100,B 文章设为 90。 - 前台:同样使用
{dede:list orderby='sortup'},A 文章就会显示在 B 文章前面。
- 后台:直接登录数据库管理工具(如 phpMyAdmin),找到
-
实现“按权重/推荐”排序:
- 后台:给文章设置“推荐”属性(
flag字段),或者手动设置“权重”值(如果模板支持)。 - 前台:使用
{dede:arclist orderby='weight'}或{dede:arclist orderby='flag'}来调用。
- 后台:给文章设置“推荐”属性(
关键点回顾:
- 核心字段:
sortup。 - 排序原则:
sortup值越大,越靠前。 - 后台操作:通过“置顶”功能间接设置
sortup值,或直接修改数据库。 - 前台调用:使用
{dede:list}或{dede:arclist}标签的orderby='sortup'属性来应用排序规则。
理解了 sortup 字段和 orderby 属性的配合使用,你就可以灵活地控制 Dedecms 网站上几乎所有列表内容的显示顺序了。
