You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopify脚本中money过滤器失效:变体价格相减后无法格式化

解决Shopify变体价格相减后使用money过滤器无输出的问题

这个问题我之前也碰到过,核心原因是Shopify的money过滤器对输入类型有要求——它更适配代表元的小数/ Money对象,而你通过minus运算得到的结果是以分为单位的整数(比如80604其实是806.04元),直接传给money过滤器会导致它无法正确解析,所以没有输出。

给你两个可行的解决办法:

方法1:转换单位后再用money过滤器

先把相减得到的分差值转换成以元为单位的数值,再应用money过滤器:

{% assign price_difference = product.variants[0].price | minus: product.variants[1].price %}
{% assign diff_in_yuan = price_difference | divided_by: 100.0 %}
console.log("{{ diff_in_yuan | money }}");

这里用divided_by: 100.0(注意是100.0而不是100,确保得到小数结果)把分转换成元,再用money过滤器就能正常输出格式化后的货币字符串了。

方法2:手动拼接货币符号(适合自定义格式场景)

如果你只需要简单的格式化,也可以自己处理数值后拼接店铺的货币符号:

{% assign price_difference = product.variants[0].price | minus: product.variants[1].price %}
{% assign diff_formatted = price_difference | divided_by: 100.0 | round: 2 %}
console.log("{{ shop.currency.symbol }}{{ diff_formatted }}");

round: 2用来确保保留两位小数,shop.currency.symbol会自动获取你店铺设置的货币符号(比如¥、$等)。

另外要注意:如果两个变体价格的差值是负数(比如第一个变体比第二个便宜),上面的方法会自动保留负号,不用额外处理。

内容的提问来源于stack exchange,提问作者Jun Kuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:52:44