Shopify 主题与 Liquid

Shopify Liquid 嵌套 for 循环里 forloop.index 用错怎么办

现象#

双层循环渲染分组列表时,内层编号接着外层往下数;或者想用外层序号拼锚点 id,结果每行都重复。

原因#

  • forloop 是循环内的局部对象,进入内层后 forloop.index 只反映内层
  • 外层序号没有在内层开始前保存,被内层覆盖
  • 用 forloop.index 拼 HTML id,同一页面出现重复 id
  • 拿 forloop.first 判断分组首项,但内层的 first 每轮都成立

处理步骤#

  1. 进入内层前保存外层序号:{% assign outer_i = forloop.index %}
  2. 内层需要绝对序号时用 {{ forloop.index0 | plus: outer_offset }} 计算
  3. 拼唯一 id 时组合两层:id="g{{ outer_i }}-i{{ forloop.index }}"
  4. 奇偶样式直接用 {% cycle 'odd','even' %},不要依赖 index 取模

验收标准#

每个分组的内层编号从 1 重新开始;页面中不再出现重复的 HTML id,样式交替正常。

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