Shopify Liquid default 过滤器对 false 和 0 不生效
现象#
设置项里填了 0 或开关关掉,页面上仍显示默认文案;想让空值走兜底逻辑,结果 0 被替换成了默认值。
原因#
default只在值为nil、false、空字符串、空数组时生效,0是有效值不会触发- 需要允许
false时不加参数,default会把 false 也替换掉 - 想区分「未设置」与「设置为空」,但两者在 Liquid 里都表现为空字符串
处理步骤#
- 允许 false 时写
{{ settings.flag | default: true, allow_false: true }} - 数值 0 要保留时不要用
default,改用{% if value == nil %}显式判断 - 需要区分未填与填了空,用
blank?判断,或在 schema 里给默认值 - 输出前统一
| strip,避免空格被当成非空
验收标准#
开关关闭时前台确实隐藏对应模块,数值设为 0 时按 0 渲染而不是回落默认值。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。