货币格式化
价格字段以纯数字存储。用 money 系列过滤器把它们格式化成货币字符串,让顾客看到符合预期的价格。本指南介绍如何格式化价格、展示货币代码,以及支持多货币。
格式化价格
product.price、variant.price 等价格字段是以店铺主单位表示的数字——例如 33,而不是 3300。务必用 money 过滤器输出价格,不要直接输出原始值。
用 money(或其别名 money_with_symbol)格式化带货币符号的价格:
{{ product.price | money }}
{{ product.price | money_with_symbol }}
$33.00
$33.00
需要不带符号的数字时(例如自定义排版),用 money_without_currency:
{{ product.price | money_without_currency }}
33.00
展示货币代码
money_with_symbol 只输出符号,而多种货币会共用同一个符号——美元和加元都用 $,人民币和日元都用 ¥。为避免在购物车等总额处产生歧义,在金额旁同时展示货币代码。
用 cart.currency——它是顾客当前正在查看的货币,与 money_with_symbol 渲染的符号一致:
{{ cart.total_price | money_with_symbol }} {{ cart.currency }}
¥225.00 CNY
🚧 注意
shop object 的
shop.currency和shop.currency_code返回店铺的基准货币,而非顾客正在查看的货币。不要用它们给展示价格标注币种:一旦多货币应用换算了金额,money_with_symbol显示展示货币(¥),而shop.currency_code仍返回基准货币(USD),配出来的标签会自相矛盾,如¥225.00 USD。
支持多货币
多货币展示由「多货币设置」应用提供,商家从应用商店安装,不属于 theme 本身。安装与配置见多货币设置插件。应用启用后:
- 启用插件后,价格默认会根据顾客的语言自动切换;商家也可在主题编辑器中把货币切换器加到 header,让顾客手动选择。
- 你现有的 money 过滤器会自动以顾客选择的(展示)货币渲染价格——符号和换算后的金额都会更新。你无需改动 Liquid,也无需自行换算。
例如,同一句 {{ product.price | money_with_symbol }},对美国顾客输出 $33.00,顾客切换到 CNY 后则输出 ¥224.08。