使用自定义字段 + SQL 查询(最常用、最灵活)
这是最核心也是最灵活的方法,它不依赖特定模型,适用于所有可以添加自定义字段的栏目。

(图片来源网络,侵删)
第 1 步:为栏目添加“价格”自定义字段
- 登录 DedeCMS 后台。
- 进入【核心】 -> 【内容模型管理】。
- 找到你的列表所对应的模型(“文章模型”或你自定义的“产品模型”),点击【字段管理】。
- 在字段管理页面,点击【添加新字段】。
- 填写字段信息:
- 字段名称:
price(建议用英文,方便调用) - 字段标识:
价格(后台显示的名称) - 字段类型: 选择
数字(如果价格是小数,选择小数更好) - 字段长度:
10 - 小数位数:
2(如果选择了小数类型) - 其他选项:根据需要设置,比如是否允许为空等。
- 字段名称:
- 保存字段。
第 2 步:在内容发布页填写价格
- 】 -> 【添加内容】或【内容管理】 -> 【编辑内容】。
- 在编辑页面,你会看到刚刚添加的“价格”字段,在相应的文章/产品中填写价格数字。
- 发布或更新内容。
第 3 步:修改列表页模板文件 (list_artlist.htm)
这是最关键的一步,你需要修改列表页的模板文件,让它根据价格进行排序。
-
找到你的列表页模板文件,通常位于
/templets/你的栏目目录/下,文件名一般是list_栏目ID.htm或者list_artlist.htm。 -
用代码编辑器打开这个文件。
-
找到调用列表数据的标签
{dede:list}。
(图片来源网络,侵删) -
默认的
{dede:list} 是按发布时间sortrank降序排列的:{dede:list pagesize='20'} <!-- 循环体内的内容 --> <li> <a href="[field:arcurl/]">[field:title/]</a> <p>价格:[field:price/]</p> </li> {/dede:list} -
修改为按价格升序排列,你需要将
{dede:list}替换为{dede:arclist},因为它支持更强大的排序功能。{dede:arclist pagesize='20' orderby='price' orderway='asc'} <!-- 循环体内的内容 --> <li> <a href="[field:arcurl/]">[field:title/]</a> <p>价格:[field:price/]</p> </li> {/dede:arclist}
标签参数解释:
pagesize='20': 每页显示 20 条数据。orderby='price': 这是核心,告诉 DedeCMS 按照price这个字段进行排序。orderway='asc': 这是排序方式。asc代表 升序 (从小到大),如果需要 降序 (从大到小),则改为orderway='desc'。
重要提示:在列表页模板中,请务必使用 {dede:arclist} 来调用数据,而不是 {dede:list},因为 orderby 和 orderway 是 arclist 标签的专属属性。

(图片来源网络,侵删)
通过后台列表页的“排序”功能(临时、手动)
如果你只是想在后台管理列表时,能手动按价格排序来查看,可以使用这个方法,但它不会影响前台页面的显示顺序。
- 】 -> 管理】。
- 在文章列表页面,点击列表上方的 “排序” 按钮。
- 在弹出的排序选项中,选择 “按价格”。
- 然后选择 “升序” 或 “降序”。
- 点击“确定”。
这个排序只是对当前后台列表视图的临时排序,刷新页面或重新进入后会恢复默认排序,它主要用于内容编辑时的快速查找。
修改PHP源文件(不推荐,有风险)
这个方法可以改变默认的排序方式,但会影响到所有使用 {dede:list} 的列表页,且升级 DedeCMS 时可能会被覆盖,强烈不推荐普通用户使用。
- 找到文件
/include/arc.listview.class.php。 - 在这个文件中搜索
sortrank,你会找到类似这样的代码:if(empty($orderby)) { $orderby = 'sortrank'; $orderway = 'DESC'; } - 将
sortrank修改为你的价格字段price,将DESC修改为ASC。if(empty($orderby)) { $orderby = 'price'; // 修改为 price $orderway = 'ASC'; // 修改为 ASC } - 保存文件。
警告:这样做之后,所有没有指定 orderby 的列表页都会默认按价格升序排列,如果你只想让特定栏目生效,这个方法就不适用了。
总结与最佳实践
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 修改模板 | 灵活、精准、不影响其他页面、推荐 | 需要修改模板文件,对新手略有门槛 | 绝大多数情况下的首选方法。 |
| 后台排序 | 简单、无需修改文件 | 仅限后台临时查看,不影响前台 | 仅用于后台内容管理时临时排序。 |
| 修改源码 | 一劳永逸(修改后) | 风险高、影响全局、升级后失效 | 不推荐,除非你非常清楚自己在做什么。 |
推荐流程:
- 为你的栏目添加
price自定义字段。 - 时填写价格。
- 找到你的列表页模板文件 (
list_xxx.htm)。 - 将
{dede:list}标签替换为{dede:arclist orderby='price' orderway='asc'}。
这样就能完美实现按价格升序排列列表了。
