Shopify 主题与 Liquid

Shopify Liquid map 取嵌套属性全是空白怎么改

现象#

集合页想一次取出所有商品的最低变体价,写了 map: 'variants.first.price',输出却是一串逗号;把属性换成 title 立刻就有值。

原因#

  • map 只读取数组元素的直接属性,属性名里的点号不会被当成路径逐层解析
  • 嵌套数组每层要单独遍历,map 不会自动穿过一层数组去取内层字段
  • 元素缺该属性时返回 nil,直接 join 就只剩分隔符,看起来像整段没渲染
  • 对 Hash 结构使用 map 得到的是键值对数组,不是某个字段的值

处理步骤#

  1. 先输出 {{ collection.products.first | json }},确认价格字段挂在 product 还是 variant 上
  2. 需要变体价格时改用循环:{% for v in product.variants %}{{ v.price }}{% endfor %},map 无法跨层
  3. 只要每件商品的最低价,直接用 product.price_min,不必绕到变体数组
  4. 输出前补 | compact 去掉 nil,避免出现连续逗号
  5. 字段名按对象文档写全小写,如 price_min 而不是 priceMin

验收标准#

集合页源码中价格数组的逗号数量与商品数一致,每个值都是数字;无价格的商品被 compact 过滤,不再留下空位。

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