arclist 是 DedeCMS 中最核心、最常用的列表标签,用于在首页、列表页等地方调用文章,灵活运用其排序功能,可以满足各种展示需求。

(图片来源网络,侵删)
核心属性:orderby 和 orderway
排序主要由两个属性控制:
orderby:指定 按什么字段 进行排序。- orderway:指定 排序的方向(升序或降序)。
orderby 属性详解 (按什么排)
orderby 的值决定了排序的依据,以下是最常用和最重要的几种排序方式:
按发布时间排序 (最常用)
这是默认的排序方式。
- 值:
pubdate - 说明: 按文章的发布时间排序。
- 示例:
{dede:arclist orderby='pubdate' titlelen='30'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:arclist}
按文章ID排序
- 值:
id - 说明: 按文章在数据库中的唯一ID排序,ID通常是递增的,所以按ID降序排列就等同于获取最新发布的文章。
- 示例:
{dede:arclist orderby='id' orderway='desc' titlelen='30'} ... {/dede:arclist}
按点击量排序 (热门文章)
- 值:
click - 说明: 按文章的点击次数(浏览量)排序,常用于制作“热门文章”板块。
- 示例:
{dede:arclist orderby='click' orderway='desc' titlelen='30' limit='0,10'} ... {/dede:arclist}
按文章权重排序 (推荐文章)
- 值:
weight - 说明: 按后台设置的“文章权重”值进行排序,权重值越高,排序越靠前,这是实现“置顶”和“推荐”功能的关键。
- 示例:
{dede:arclist orderby='weight' orderway='desc' titlelen='30'} ... {/dede:arclist}
按评论数排序
- 值:
scores - 说明: 按文章的评论数量排序。
- 示例:
{dede:arclist orderby='scores' orderway='desc' titlelen='30'} ... {/dede:arclist}
按随机顺序排序
- 值:
rand - 说明: 随机获取文章,每次刷新页面文章的顺序都会改变,常用于制作“随机推荐”。
- 示例:
{dede:arclist orderby='rand' titlelen='30' limit='0,5'} ... {/dede:arclist}
排序
- 值:
title - 说明: 按文章标题的拼音或首字母顺序进行排序。
- 示例:
{dede:arclist orderby='title' titlelen='30'} ... {/dede:arclist}
按更新时间排序
- 值:
sortup - 说明: 按文章的最后更新时间排序,如果你在后台编辑了已发布的文章,这个时间会改变。
- 示例:
{dede:arclist orderby='sortup' orderway='desc' titlelen='30'} ... {/dede:arclist}
orderway 属性详解 (怎么排)
orderway 只有两个值,用来配合 orderby 使用:

(图片来源网络,侵删)
desc: 降序 (Descending),从大到小,从新到旧,从高到低。orderby='pubdate' orderway='desc'-> 按发布时间,最新的在前。orderby='click' orderway='desc'-> 按点击量,点击最多的在前。orderby='weight' orderway='desc'-> 按权重,权重最高的在前。
asc: 升序 (Ascending),从小到大,从旧到新,从低到高。orderby='pubdate' orderway='asc'-> 按发布时间,最旧的在前。orderby='title' orderway='asc'-> 按标题,A-Z在前。
综合应用示例
示例1:首页调用最新文章 (默认)
这是最常见的情况,按发布时间倒序,显示10条。
<h3>最新文章</h3>
<ul>
{dede:arclist typeid='' titlelen='30' row='10'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me,30)'/]</a>
<span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
typeid='':调用所有栏目的文章,如果指定typeid='1,2',则只调用栏目ID为1和2的文章。row='10':调用10条记录,len='30'`:标题长度限制为30个字符。
示例2:调用“热门文章”板块
按点击量倒序,显示前5条。
<h3>热门文章</h3>
<ol>
{dede:arclist orderby='click' orderway='desc' row='5'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ol>
示例3:调用“推荐文章”板块
按权重倒序,显示前8条。
<h3>编辑推荐</h3>
<div>
{dede:arclist orderby='weight' orderway='desc' row='8'}
<a href="[field:arcurl/]" title="[field:title/]">[field:image/]<span>[field:title/]</span></a>
{/dede:arclist}
</div>
示例4:多条件排序 (重要)
DedeCMS 的 orderby 支持多字段组合排序,用逗号隔开。排序的优先级从左到右。
我们想实现这样的效果:
- 首先,按
weight(权重) 降序排列,让推荐的文章排在最前面。 - 然后,对于权重相同的文章,再按
pubdate(发布时间) 降序排列,让新发布的排在前面。
<h3>综合推荐</h3>
<ul>
{dede:arclist
orderby='weight desc, pubdate desc'
row='10'
titlelen='30'
}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<small>权重:[field:weight/] | 时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</small>
</li>
{/dede:arclist}
</ul>
注意:在组合排序时,最好在每个字段后面都明确指定 desc 或 asc,这样逻辑最清晰,避免因默认值导致意外结果。
常见问题与注意事项
-
性能问题:
orderby='rand'(随机排序) 在数据量大的情况下会有明显的性能问题,因为它会使数据库无法使用索引,如果数据量很大,不建议使用。orderby='click'或orderby='scores'等非索引字段,在大数据量时也可能稍慢。
-
字段不存在:
orderby的值写错了(比如写成了orderb='pubdate'),标签会不显示任何内容,且后台可能不会报错,请仔细检查拼写。
-
与
flag属性结合:flag属性用于调用具有特定标记的文章,如'c'(推荐),'h'(头条),'p'(图片) 等。orderby和flag可以同时使用,先筛选出符合条件的文章,再进行排序。- 示例: 调用所有推荐文章,并按点击量排序。
{dede:arclist flag='c' orderby='click' orderway='desc'} ... {/dede:arclist}
总结表
orderby 值 |
排序依据 | 常用场景 | 建议搭配 orderway |
|---|---|---|---|
pubdate |
发布时间 | 最新文章、资讯列表 | desc (最新优先) |
id |
文章ID | 最新文章 (等同于pubdate desc) | desc (ID越大越新) |
click |
点击量 | 热门文章、排行榜 | desc (点击最多优先) |
weight |
文章权重 | 推荐文章、置顶文章 | desc (权重最高优先) |
rand |
随机 | 随机推荐、增加趣味性 | - (无需orderway) |
sortup |
更新时间 | 最新动态、编辑推荐 | desc (最新更新优先) |
scores |
评论数 | 热门评论、互动排行 | desc (评论最多优先) |
希望这份详细的指南能帮助你完全掌握 DedeCMS arclist 的排序功能!
