跳到主要内容

货币格式化

价格字段以纯数字存储。用 money 系列过滤器把它们格式化成货币字符串,让顾客看到符合预期的价格。本指南介绍如何格式化价格、展示货币代码,以及支持多货币。

格式化价格

product.pricevariant.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 objectshop.currencyshop.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