arclist 是 DedeCMS 中最核心、最常用的列表调用标签,它非常灵活,可以通过多种参数来控制输出内容。权重(weight) 是一个非常实用的排序方式,特别适合用于实现首页焦点图、推荐位、热门产品等需要手动控制内容顺序的场景。

核心语法:orderby='weight'
要实现按权重排序,你只需要在 arclist 标签中设置 orderby 参数为 weight 即可。
基本语法格式:
{dede:arclist orderby='weight' orderway='asc'}
<li>
<a href='[field:arcurl/]'>[field:title/]</a>
</li>
{/dede:arclist}
参数解释:
orderby='weight': 指定排序依据为文章的“权重”字段。orderway='asc': 指定排序方式为 升序 (从小到大),权重值越小的文章,排列越靠前。orderway='desc': 指定排序方式为 降序 (从大到小),权重值越大的文章,排列越靠前。
详细用法与示例
示例1:首页焦点图(升序排序,权重小的在前)
这是最常见的用法,我们通常将焦点图的文章权重设置为 1, 2, 3, 4...,这样就能保证它们按照我们指定的顺序显示。

步骤:
-
后台设置权重:
- 登录 DedeCMS 后台,进入“[核心]-[内容模型管理]”,选择你的文章模型(文章”)。
- 点击“字段管理”,确保有一个名为“权重”的字段,设置为前台排序”是“是”。
- 进入“[所有文档]-[文档列表]”,编辑你想要作为焦点图的文章,在“自定义属性”或“权重”字段(根据你的模板和字段设置位置可能不同)中,填入一个数字,
1,2,3等。注意:权重必须是数字。
-
前台模板调用: 在你的首页模板文件(通常是
index.htm)中,写入以下代码:
<!-- 焦点图列表,按权重升序排列 -->
<div class="focus-slider">
{dede:arclist typeid='首页栏目ID' row='5' orderby='weight' orderway='asc'}
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
</a>
{/dede:arclist}
</div>
typeid='首页栏目ID': 只调用指定栏目下的文章。row='5': 只调用5篇文章。orderby='weight' orderway='asc': 按权重从小到大排序,完美实现焦点图顺序。
示例2:热门产品推荐(降序排序,权重大的在前)
有时候我们希望权重值代表“重要程度”或“热度”,权重越高的越靠前。

后台设置权重:
和上面一样,将热门产品的权重设置为 10, 20, 30 等较大的数字。
前台模板调用:
<!-- 热门产品列表,按权重降序排列 -->
<div class="hot-products">
<h2>热门推荐</h2>
<ul>
{dede:arclist channelid='1' row='4' orderby='weight' orderway='desc'}
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</li>
{/dede:arclist}
</ul>
</div>
channelid='1': 指定调用内容模型ID为1(通常是“文章”,请根据你的实际情况修改)的内容。orderby='weight' orderway='desc': 按权重从大到小排序,权重为30的会排在权重为20的前面。
orderby 参数的其他常用值
orderby 参数非常强大,除了 weight,还支持很多其他的排序方式:
| 参数值 | 说明 | 示例 |
|---|---|---|
id |
按文章ID排序 | orderby='id' |
sortrank |
默认值,按文章发布时间(排序级别)排序 | orderby='sortrank' |
click |
按文章点击量排序 | orderby='click' |
postnum |
按文章评论数排序 | orderby='postnum' |
rand |
随机排序,每次刷新页面,文章顺序都会打乱 | orderby='rand' |
weight |
按权重排序,本文重点 | orderby='weight' |
pubdate |
按文章发布时间排序 | orderby='pubdate' |
lastpost |
按文章最后评论时间排序 | orderby='lastpost' |
组合使用:
orderby 还可以组合使用,用逗号隔开,前面的优先级更高。
先按权重排序,权重相同的再按发布时间倒序:
{dede:arclist orderby='weight, pubdate' orderway='asc, desc'}
...
{/dede:arclist}
这个标签的含义是:首先按 weight 升序排列,如果有多篇文章的 weight 值相同,那么这些文章将再按 pubdate 降序排列。
重要注意事项
-
权重必须是纯数字: 在后台编辑文章时,务必确保“权重”字段里填写的是数字(如
10,100),而不是其他字符,如果填写了非数字字符,排序可能会失效或出现意外结果。 -
weight字段必须存在且可用: 确保你的内容模型中已经启用了“权重”字段,并且该字段被设置为“前台排序可用”,通常默认是可用的。 -
orderway的配合:orderby='weight'只是告诉系统“按什么排”,orderway='asc'或desc'才是告诉系统“怎么排”,这两个参数通常需要配合使用才能达到预期效果。 -
与
orderby='sortrank'的区别:orderby='sortrank':按文章的“发布时间”排序,这是系统默认的排序方式,适合新闻列表等时效性内容。orderby='weight':按你手动设定的数字排序,适合需要固定顺序的推荐、焦点图等内容。
要使用 arclist 进行权重排序,记住核心公式:
{dede:arclist orderby='weight' orderway='asc' ...}
...
{/dede:arclist}
orderby='weight':告诉系统使用权重排序。orderway='asc':让权重小的排在前面(推荐用于焦点图)。orderway='desc':让权重大的排在前面(推荐用于热门推荐)。
通过灵活运用这个方法,你可以轻松实现各种需要手动控制内容顺序的前台效果。
