Shopify 主题与 Liquid

Shopify Liquid default 过滤器对 false 和 0 不生效

现象#

设置项里填了 0 或开关关掉,页面上仍显示默认文案;想让空值走兜底逻辑,结果 0 被替换成了默认值。

原因#

  • default 只在值为 nil、false、空字符串、空数组时生效,0 是有效值不会触发
  • 需要允许 false 时不加参数,default 会把 false 也替换掉
  • 想区分「未设置」与「设置为空」,但两者在 Liquid 里都表现为空字符串

处理步骤#

  1. 允许 false 时写 {{ settings.flag | default: true, allow_false: true }}
  2. 数值 0 要保留时不要用 default,改用 {% if value == nil %} 显式判断
  3. 需要区分未填与填了空,用 blank? 判断,或在 schema 里给默认值
  4. 输出前统一 | strip,避免空格被当成非空

验收标准#

开关关闭时前台确实隐藏对应模块,数值设为 0 时按 0 渲染而不是回落默认值。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。