Shopify Liquid if 与 endif 不匹配怎么修
报错长什么样#
主题保存或前台渲染时出现 Liquid syntax error: 'if' tag was never closed,或编辑器底部红条提示某个 .liquid 文件。局部区块空白,其它页面正常。Theme Check / shopify theme check 也会在对应行指出未闭合的 if。
根因拆解#
Liquid 要求每个 {% if %}(以及 elsif/else 链)最终有且仅有一个配对的 {% endif %}。常见失手:复制条件块时漏删旧 endif;在 {% comment %} 里写了半截控制流却以为不会解析;把 endif 误写成 end if 或中文全角字符;在 section 的 schema 上方插入条件后,结尾标签落在 schema 之后导致结构错位。unless、case 的闭合标签与 if 不同,混用也会被解析器判为未闭合。
定位与修复#
- 在代码编辑器打开报错文件,用编辑器括号匹配或 Theme Check 跳到首个未闭合
if。 - 自上而下数:每出现一次
{% if/{% unless/{% case,必须在同作用域找到对应endif/endunless/endcase。 - 临时把可疑块包进
{% comment %}...{% endcomment %}做二分,确认是哪一段破坏配对,再精修。 - 本地可用 Shopify CLI:
shopify theme check,对照 Liquid if 标签文档。 - 修好后先在主题预览确认条件为真/假两分支都渲染,再发布。
- 团队约定:新增条件块时先写好
endif再填中间逻辑,减少漏闭合。
收尾标准#
报错消失;Theme Check 对该文件无同类 error;真假条件预览均符合预期。记录文件路径与 Asia/Shanghai 修复时间。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。