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
相关产品推荐
相关产品推荐

