orderby 是 DedeCMS 中一个非常重要且常用的参数,它决定了你在列表页看到的文章是按照什么规则进行排序的。

(图片来源网络,侵删)
orderby 的基本用法
orderby 参数通常用在 {dede:list} 标签中,格式如下:
{dede:list orderby='排序规则' pagesize='20'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
orderby='排序规则':这是核心部分,指定排序方式。pagesize='20':指定每页显示的文章数量。
orderby 常用排序规则详解
以下是 orderby 最常用的一些值及其含义:
| 排序规则 | 值 | 说明 |
|---|---|---|
| 默认排序 | orderby='default' |
这是最常用、最推荐的默认值,它按照后台“文档排序”选项中的设置进行排序。 |
| 发布日期 | orderby='pubdate' |
按照文章的发布时间降序排列(最新的在最前面)。 |
| ID排序 | orderby='id' |
按照文章的ID号降序排列(ID大的在最前面)。 |
| 点击量 | orderby='click' |
按照文章的点击量(浏览次数)降序排列(点击量高的在最前面)。 |
orderby='title' |
按照文章标题的拼音首字母或汉字编码进行升序或降序排列。 | |
| 评分 | orderby='scores' |
按照文章的评分(如果启用了评分功能)进行排序。 |
| 随机排序 | orderby='rand' |
随机显示文章,每次刷新页面文章顺序都会改变。 |
| 权重 | orderby='weight' |
按照文章的权重值进行降序排列(权重高的在最前面),权重是DedeCMS后期版本增加的一个重要排序依据。 |
升序与降序(正序与倒序)
默认情况下,大部分排序规则都是降序(从大到小、从新到旧),pubdate, id, click 等。
如果你想使用升序(从小到大、从旧到新),可以在排序规则后面加上 asc。

(图片来源网络,侵删)
示例:
-
按发布日期升序排列(最早的在最前面)
{dede:list orderby='pubdate asc' pagesize='20'} ... {/dede:list} -
按ID升序排列(ID最小的在最前面)
{dede:list orderby='id asc' pagesize='20'} ... {/dede:list}
最重要的排序方式:orderby='default' 与后台联动
orderby='default' 是最强大、最灵活的排序方式,因为它与 DedeCMS 后台设置紧密关联。

(图片来源网络,侵删)
如何设置默认排序?
- 登录你的 DedeCMS 后台。
- 进入【栏目管理】 -> 选择你想要设置的栏目。
- 点击【修改】按钮。
- 在栏目编辑页面,找到 “文档排序方式” 这个选项。
- 在下拉菜单中,你可以选择多种排序规则,甚至可以组合多个规则,系统会按你设置的优先级进行排序。
你可以设置为:
置顶 > 顶 > 周点击 > 日点击 > 随机 > ID
这意味着:
- 所有被“置顶”的文章会排在最前面。
- 然后是被“顶”的文章。
- 接着是按“周点击量”排序。
- ...以此类推。
当你使用 orderby='default' 时,列表页就会严格按照你在后台为这个栏目设定的这个复杂规则来显示文章。
推荐做法:
- 常规列表页:直接使用
orderby='default',将排序规则的控制权交给后台,更加灵活。 - 特殊需求:你需要一个专门展示“热门文章”的列表页,此时可以直接使用
orderby='click'来强制按点击量排序。
完整示例
假设我们要创建一个“最新资讯”列表页,希望按发布时间倒序排列,每页显示10条。
list_artlist.htm 模板文件内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">最新资讯 - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>最新资讯</h1>
<ul>
{dede:list orderby='pubdate' pagesize='10'}
<li>
<!-- [field:title/] 是文章标题 -->
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<!-- [field:pubdate/] 是发布时间,使用函数格式化 -->
<span class="date">发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]</span>
<!-- [field:click/] 是点击量 -->
<span class="click">浏览:[field:click/]次</span>
</li>
{/dede:list}
</ul>
<!-- 分页标签 -->
{dede:pagelist listsize='4'/}
</body>
</html>
注意事项
- 性能问题:
orderby='rand'(随机排序) 会给数据库带来较大的负担,尤其是在数据量大的情况下,如果你的文章有成千上万篇,使用随机排序可能会导致页面加载缓慢,请谨慎使用。 - 权重优先:在 DedeCMS 的排序逻辑中,“权重” (weight) 是一个非常高的优先级,即使你设置了
orderby='click',如果某些文章被设置了很高的权重,它们依然可能排在点击量很高的文章前面,这体现了orderby='default'的复杂性。 - 后台设置是根本:对于绝大多数情况,理解并善用后台的“文档排序方式”设置,然后在前台模板中使用
orderby='default',是解决排序问题的最佳实践。
希望这份详细的解释能帮助你完全掌握 DedeCMS 的 orderby 排序功能!
