orderby=pubdate 是什么?
orderby=pubdate 是 DedeCMS 标签(如 {dede:arclist}, {dede:sql} 等)中的一个排序参数。

orderby: 指的是“按...排序”。pubdate: 指的是“发布日期”或“公开时间”(Publish Date)。
orderby=pubdate 的完整含义就是:按照文章的发布日期进行排序。
在常用标签中的具体用法
orderby=pubdate 最常用于以下两个标签。
在 {dede:arclist} 标签中(用于列表页、首页)
这是最常见的用法,用于在文章列表、首页、栏目页等地方调用文章并按发布日期排序。
基本语法:

{dede:arclist orderby='pubdate' titlelen='30' row='10'}
<li>
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
参数详解:
orderby='pubdate': 核心参数,指定按发布日期降序排列(最新的在最前面),len='30'`: 标题长度,截取30个字符。row='10': 调用文章的数量,调用10篇。[field:arcurl/]: 文章链接。[field:title/]: 文章标题。[field:pubdate/]: 文章发布日期,通常会配合一个函数来格式化日期,function="MyDate('Y-m-d', @me)"将日期格式化为年-月-日。
示例:调用最新发布的5篇产品文章
<h3>最新产品</h3>
<ul>
{dede:arclist typeid='5' orderby='pubdate' row='5' titlelen='20'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<em>[field:pubdate function="MyDate('m-d', @me)"/]</em>
</li>
{/dede:arclist}
</ul>
这个例子会从ID为5的栏目中,调用最新发布的5篇文章,标题长度不超过20字,日期格式为 月-日。
在 {dede:sql} 标签中(用于自定义SQL查询)
当你需要写自定义的SQL语句来获取数据时,也可以使用 orderby=pubdate 来对结果进行排序。
基本语法:
{dede:sql sql="SELECT id,title,pubdate FROM dede_archives WHERE channel=1 ORDER BY pubdate DESC LIMIT 10"}
<li>
<a href='/plus/view.php?aid=[field:id/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:sql}
注意:
在 {dede:sql} 中,orderby 参数是直接写在 sql 语句里面的,这里 ORDER BY pubdate DESC 就等同于 orderby='pubdate'。DESC 表示降序(从新到旧),ASC 表示升序(从旧到新)。
关键点:排序方向(升序 vs 降序)
这是 orderby=pubdate 中一个非常重要的细节,也是很多新手容易混淆的地方。
默认情况下,orderby=pubdate 是降序排列的,即最新的文章排在最前面。
-
降序 (Descending):
pubdate默认值,按时间从新到旧排序。(最常用)orderby='pubdate'(等同于ORDER BY pubdate DESC)orderby='pubdate DESC'
-
升序 (Ascending): 按时间从旧到新排序。
orderby='pubdate ASC'
示例:调用最早发布的文章
如果你想做一个“历史文章”列表,显示最早发布的文章,就需要使用升序。
<h3>历史文章</h3>
<ul>
{dede:arclist orderby='pubdate ASC' row='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
</ul>
与其他 orderby 值的对比
orderby 参数支持多种排序方式,了解它们之间的区别很重要。
orderby 值 |
含义 | 排序依据 | 备注 |
|---|---|---|---|
pubdate |
按发布日期 | 文章的发布时间 | 默认降序,最新在前,最常用。 |
senddate |
按录入日期 | 文章录入到系统的时间 | 如果文章是后期编辑后更新的,senddate 会变,但 pubdate 不变。 |
hot 或 click |
按点击量 | 文章的点击次数 | 需要开启“点击计数”功能。 |
scores |
按评分 | 文章的平均分 | 需要开启“评论/评分”功能。 |
sortrank |
按文章排序值 | 后台“高级选项”中的“排序值” | 数字越大,排序越靠前,常用于人工置顶。 |
id |
按文章ID | 文章的唯一ID | 通常ID是递增的,所以按ID降序也近似于按发布时间降序。 |
lastpost |
按最后评论时间 | 文章最后一条评论的时间 | 适用于评论活跃的站点。 |
常见问题与解决方案 (FAQ)
Q1: 为什么我设置了 orderby='pubdate',但文章顺序不对?
A1: 最常见的原因是排序方向。 请检查你想要的顺序是新到旧还是旧到新。
- 新到旧(默认):
orderby='pubdate'或orderby='pubdate DESC' - 旧到新:
orderby='pubdate ASC'
Q2: pubdate 和 senddate 有什么区别?什么时候用哪个?
A2:
pubdate(发布日期): 指文章首次发布或公开的时间,这个时间通常比较稳定,适合用来展示“最新资讯”、“最新产品”等。senddate(录入日期): 指文章被录入到 DedeCMS 数据库中的时间,如果你对一篇文章进行了编辑、修改,更新”它,senddate会变成当前时间,但pubdate通常不变。
选择建议:
- 如果你想展示网站最新动态,无论文章是新发还是旧文被修改,都用
orderby='senddate'。 - 如果你想展示真正意义上的最新发布的文章,用
orderby='pubdate'。
Q3: 如何实现“先按置顶(sortrank),再按发布日期(pubdate)”排序?
A3: 你可以使用多个排序字段,用逗号隔开。
{dede:arclist orderby='sortrank,pubdate' row='20'}
...
{/dede:arclist}
这行代码的含义是:首先按照 sortrank(排序值)降序排列,sortrank 相同(比如都没有设置排序值),则再按照 pubdate 降序排列。 这是实现“人工置顶”功能的经典写法。
orderby=pubdate 是 DedeCMS 中一个基础且极其重要的排序参数。
- 核心功能:按文章发布日期排序。
- 默认行为:降序排列,最新文章在前。
- 升序用法:
orderby='pubdate ASC',最早文章在前。 - 最佳实践:在需要展示最新内容的场景下(如首页、栏目页),
orderby='pubdate'是你的首选,当需要结合人工置顶时,可以写成orderby='sortrank,pubdate'。
