Shopify 主题与 Liquid

Shopify Liquid unless 条件反了怎么排查

错乱长什么样#

本应隐藏的售罄标还在,或会员价区块对未登录用户也露出来。逻辑作者以为 unless 等于“如果不是”,但嵌套 else 后大脑按 if 习惯推理,结果条件反了。有的店铺把 unless customer 写成判断“是顾客”,实际是“不是顾客时才进入”。

语义要点#

{% unless condition %} … {% endunless %} 在 condition 为假时渲染。它等价于 {% if condition == false %} 一类判断,但可读性因人而异。unless 支持 else,此时 else 分支在 condition 为真时执行——与直觉上“unless 的否则”容易拧巴。更稳妥的团队规范:复杂布尔只用 if/elsif/else,把 unless 留给单行简单否定。

纠正步骤#

  1. 找到问题 snippet,把 unless 改写成等价 if 并加上注释说明业务语义(例如“仅访客可见”)。
  2. 画出真值表:登录/未登录 × 有货/无货,四格各应看到什么,再对照 Liquid。
  3. 检查是否误把 unless A and B 当成 unless (A and B)——Liquid 运算符优先级以文档为准,必要时拆成嵌套 if。见 unless。
  4. 主题编辑器无法模拟登录态时,用顾客账号预览或主题预览分享链接验证。
  5. 代码评审要求:出现 unless+else 必须附真值表或改写为 if。
  6. 发布前在副本主题回归会员价、售罄、地区隐藏等相关模块。

完成定义#

四种边界组合显示与真值表一致;团队文档写明本仓库对 unless 的使用约定。

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