Shopify Liquid 嵌套 for 循环里 forloop.index 用错怎么办
现象#
双层循环渲染分组列表时,内层编号接着外层往下数;或者想用外层序号拼锚点 id,结果每行都重复。
原因#
forloop是循环内的局部对象,进入内层后forloop.index只反映内层- 外层序号没有在内层开始前保存,被内层覆盖
- 用
forloop.index拼 HTML id,同一页面出现重复 id - 拿
forloop.first判断分组首项,但内层的 first 每轮都成立
处理步骤#
- 进入内层前保存外层序号:
{% assign outer_i = forloop.index %} - 内层需要绝对序号时用
{{ forloop.index0 | plus: outer_offset }}计算 - 拼唯一 id 时组合两层:
id="g{{ outer_i }}-i{{ forloop.index }}" - 奇偶样式直接用
{% cycle 'odd','even' %},不要依赖 index 取模
验收标准#
每个分组的内层编号从 1 重新开始;页面中不再出现重复的 HTML id,样式交替正常。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。