Shopify Liquid for 循环未结束怎么排查
表现#
集合页、商品推荐或购物车行循环只输出一部分,或直接抛出 for tag was never closed。有时页面能开,但 forloop.index 行为怪异,末尾残留未渲染的 Liquid 原文。
为何会发生#
{% for item in collection.products %} 必须用 {% endfor %} 结束。漏写 endfor、在循环内 return 式地过早 endfor、或把 endfor 写进被 if 包住的分支导致部分路径未闭合,都会触发。嵌套双层 for 时,内层 endfor 误删会让外层“看起来少一个结束标签”。分页场景下若在 paginate 与 for 之间交叉闭合,解析器同样报错。
处理顺序#
- 打开报错模板(常见
sections/main-collection.liquid、snippets/card-product.liquid),搜索所有for与endfor,核对数量与嵌套层次。 - 用缩进对齐嵌套:外层循环完整包住内层,禁止交叉闭合。
- 若循环包在
paginate内,确认结构为paginate→for→endfor→endpaginate。参见 for 标签 与 paginate。 - 需要提前跳出视觉输出时,用
if包住输出而非提前endfor。 - 大集合注意
for的limit/offset或分页,避免一次渲染过多节点拖慢 TTFB。 - 预览多页分页与空集合两种边界,确认无残留标签字符。
如何算修好#
主题可保存;集合首页与末页、空集合均无 Liquid 报错;卡片数量与后台商品数(在 limit 内)一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。