在织梦(DedeCMS)系统中,列表页调用商品价格是电商类网站常见的需求,但默认情况下织梦列表页并不直接支持调用自定义字段如价格,需要通过修改模板文件、调整字段调用方式或使用SQL标签实现,以下是详细的操作方法和注意事项,帮助您在列表页正确显示价格信息。

准备工作:确保价格字段已正确添加
在调用价格之前,需确认后台已为对应模型添加了价格字段,以普通文章模型为例,操作步骤如下:
- 登录织梦后台,进入“核心”→“内容模型管理”→“普通文章模型”→“字段管理”。
- 点击“添加字段”,设置字段参数:
- 字段名称:price(建议用英文,避免中文乱码)
- 字段类型:数字(适用于纯价格)或文本(适用于带货币符号的价格)
- 字段提示:商品价格
- 其他选项保持默认,点击“保存”。
- 在发布或编辑文档时,填写价格信息,并确保字段值已保存。
方法一:使用[field:函数]调用自定义字段
织梦默认支持通过[field:自定义字段名]调用自定义字段,但需确保字段名正确且模型绑定无误,操作步骤:
- 打开列表页模板文件(通常位于
/templets/default/list_*.htm)。 - 在需要显示价格的位置插入代码:
[field:price function="GetMoney(@me)"/]
@me表示当前字段的值,GetMoney()是织梦内置的货币格式化函数(如添加“¥”符号),若无需格式化可直接使用[field:price/]。
- 保存模板文件,更新列表页缓存(后台“生成”→“更新主页HTML”)。
注意事项:
- 若价格未显示,检查字段名是否与后台设置一致(区分大小写)。
- 确保文档列表选择了包含该字段的模型,否则字段值为空。
方法二:通过SQL标签调用价格
当字段调用无效或需要复杂条件时,可使用SQL标签直接查询数据库,操作步骤:

- 在列表页模板中插入SQL标签代码:
{dede:sql sql="SELECT price FROM `dede_addonarticle` WHERE aid=~id~"} [field:price/] {/dede:sql}dede_addonarticle为附加表名,若为其他模型(如产品模型)需替换为对应表名(如dede_addonproduct)。~id~为当前文档的ID,织梦会自动替换。
- 若需格式化价格,可结合函数:
{dede:sql sql="SELECT price FROM `dede_addonarticle` WHERE aid=~id~"} [field:price function="sprintf('%.2f',@me)"/] {/dede:sql}
注意事项:
- SQL标签可能影响性能,建议仅在必要时使用。
- 确保表名和字段名正确,避免SQL语法错误。
方法三:使用arclist标签调用价格
arclist标签是织梦列表页的核心标签,通过设置addfields参数可调用自定义字段,操作步骤:
- 在列表页模板中修改arclist标签:
{dede:arclist addfields='price' channelid='1'} <li> <a href="[field:arcurl/]">[field:title/]</a> 价格:[field:price/] </li> {/dede:arclist}addfields='price'指定调用的自定义字段。channelid='1'为模型ID,需与实际模型对应。
注意事项:
- 仅适用于附加表字段,普通主表字段无需
addfields。 - 若字段不显示,检查模型是否勾选了“使字段可以在列表页模板使用”。
常见问题与解决方案
-
价格显示为空:
(图片来源网络,侵删)- 原因:字段名错误、模型未绑定字段或文档未填写价格。
- 解决:检查后台字段设置,确保文档已保存价格数据。
-
价格格式异常:
- 原因:未使用格式化函数或字段类型选择不当。
- 解决:使用
function="GetMoney(@me)"或function="number_format(@me,2)"格式化。
价格调用代码示例对比
| 方法 | 代码示例 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| field标签 | [field:price function="GetMoney(@me)"/] |
简单字段调用 | 代码简洁 | 需确保字段正确配置 |
| SQL标签 | {dede:sql sql="SELECT price FROM..."/} |
复杂条件查询 | 灵活度高 | 性能较低 |
| arclist标签 | {dede:arclist addfields='price'...} |
列表页多字段调用 | 支持分页与排序 | 需指定模型ID |
相关问答FAQs
问题1:为什么使用[field:price/]在列表页无法显示价格?
解答:可能原因有三:一是后台未为模型添加price字段或字段名错误;二是发布文档时未填写价格值;三是模板缓存未更新,解决方案:检查字段设置,确保文档数据完整,并在后台“生成”→“更新缓存”后刷新页面。
问题2:如何在列表页将价格格式化为“¥99.00”形式?
解答:可通过织梦内置函数实现,在调用价格时添加function参数,[field:price function='sprintf("¥%.2f",@me)'/],其中%.2f表示保留两位小数,为货币符号,可根据需求调整。
通过以上方法,您可以在织梦列表页灵活调用并显示价格信息,操作时需注意字段配置与模板语法的正确性,避免因大小写或表名错误导致调用失败,如需进一步优化,可结合CSS样式实现价格对齐、颜色区分等展示效果。
