arclistsg 是 arclist 标签的一个“高级”或“扩展”版本,它的名字可以理解为 "ArcList Special" 或 "ArcList Grouped" (根据不同版本和开发者,含义略有差异),它最大的特点是可以在调用文章列表时,根据指定的附加字段(如文章点击量、评论数、得分等)进行排序,而不仅仅是按发布时间排序。

(图片来源网络,侵删)
arclistsg 标签的基本语法
arclistsg 标签的基本结构和 arclist 类似,但增加了一些特有的属性。
{dede:arclistsg
typeid='0'
row='10'
col='1'len='30'
orderby='default'
orderway='desc'
att='0'
keyword=''
limit='0,10'
channelid='1'
subday='0'
noatt='0'
lazyload='0'
orderway='desc'
flag='h'
att='2'
channelid='1'
addfields='click'
filter=''}
<a href='[field:arcurl/]'>[field:title/]</a>
<small>点击量:[field:click/]</small>
{/dede:arclistsg}
核心排序功能详解
排序功能主要由 orderby 和 orderway 两个属性控制。
orderby:指定排序依据
orderby 属性决定了你希望按照哪个字段来对文章进行排序,这是 arclistsg 的核心。
| 值 | 说明 | 备注 |
|---|---|---|
default |
默认排序(按发布时间 pubdate 降序) |
如果不指定 orderby,默认就是这个。 |
hot 或 click |
按点击量排序 | 需要确保文章有点击量数据。 |
pubdate |
按发布时间排序 | 同 default,但可以明确指定。 |
lastpost |
按最后评论时间排序 | 适用于有评论的文章。 |
scores |
按文章得分排序 | 需要在后台为文章设置“得分”。 |
rand |
随机排序 | 每次刷新页面,文章顺序都会变。 |
id |
按文章ID排序 | |
arcrank |
按文章权限级别排序 | 后台文章有“优先级”设置。 |
sortrank |
按后台文章排序值排序 | 在后台发布文章时可以手动设置。 |
| 自定义字段 | 按你添加的自定义字段排序 | 这是 arclistsg 的强大之处! |
如何使用自定义字段排序?

(图片来源网络,侵删)
- 确保你的自定义字段有值:比如你添加了一个自定义字段
price(价格),并且给多篇文章填写了价格。 - 在标签中指定字段名:将
orderby的值设置为你自定义字段的名字。{dede:arclistsg addfields='price' orderby='price'} ... {/dede:arclistsg}addfields='price':非常重要!它告诉标签你需要获取price这个字段的值,否则排序会失败。orderby='price':指定按price字段进行排序。
orderway:指定排序方式
orderway 属性决定了排序的升降顺序,它必须与 orderby 配合使用。
| 值 | 说明 |
|---|---|
desc |
降序(从大到小,Z到A,新到旧) |
asc |
升序(从小到大,A到Z,旧到新) |
示例:
-
按点击量从高到低(热门文章):
{dede:arclistsg row='10' orderby='click' orderway='desc'} <li><a href="[field:arcurl/]">[field:title/]</a> ([field:click/])</li> {/dede:arclistsg} -
按价格从低到高(优惠商品):
(图片来源网络,侵删){dede:arclistsg addfields='price' row='10' orderby='price' orderway='asc'} <li><a href="[field:arcurl/]">[field:title/] - ¥[field:price/]</a></li> {/dede:arclistsg} -
按发布时间从早到晚(归档列表):
{dede:arclistsg row='20' orderby='pubdate' orderway='asc'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclistsg}
arclistsg 与 arclist 的主要区别
很多人会混淆 arclistsg 和 arclist,这里做一个清晰的对比:
| 特性 | arclist (普通列表) |
arclistsg (特殊/分组列表) |
|---|---|---|
| 排序依据 | 非常有限,主要依赖 orderby 的固定值(如 hot, pubdate)。 |
非常灵活,可以按任何附加字段(包括自定义字段)排序。 |
| 附加字段 | 需要使用 addfields 获取,但主要用于显示,不一定能用于排序。 |
核心功能就是通过 addfields 和 orderby 的组合来实现按附加字段排序。 |
| 适用场景 | 常规的按时间、点击量排序的文章列表。 | 高级需求,如按价格、销量、评分、自定义权重等排序的商品列表、专题列表等。 |
| 性能 | 在标准用法下性能较好。 | 如果排序的字段没有建立索引,大数据量时可能会有性能损耗。 |
简单总结: 如果只是按时间、点击量等系统默认字段排序,用 arclist 就够了,如果需要按自定义字段或者更复杂的逻辑排序,arclistsg 是不二之选。
常见问题与注意事项
-
Q: 为什么我设置了
orderby='click',但排序结果不对?- A: 最可能的原因是
addfields属性缺失。arclistsg需要先通过addfields='click'获取到点击量数据,才能根据它进行排序,请确保addfields中包含了orderby指定的所有字段。
- A: 最可能的原因是
-
Q: 排序结果不准确,或者数据混乱?
- A:
- 检查数据库中该字段是否有空值或非数字值(如果是按数字排序)。
- 对于大型数据集,可以考虑在数据库后台为该排序字段建立索引,以提高查询效率。
- 检查
orderway是否设置正确。
- A:
-
Q:
arclistsg标签在默认模板里没有怎么办?- A:
arclistsg不是 DedeCMS 的原生核心标签,而是由某些二次开发版本或插件提供的,如果你的系统没有这个标签,你需要找到对应的标签库文件(通常是/include/taglib/arclistsg.lib.php)并放到你的/include/taglib/目录下,或者在dede/templets/目录下的标签模板文件中添加它。
- A:
希望这份详细的解析能帮助你完全掌握 dede:arclistsg 的排序功能!
