Shopify Liquid map 取嵌套属性全是空白怎么改
现象#
集合页想一次取出所有商品的最低变体价,写了 map: 'variants.first.price',输出却是一串逗号;把属性换成 title 立刻就有值。
原因#
- map 只读取数组元素的直接属性,属性名里的点号不会被当成路径逐层解析
- 嵌套数组每层要单独遍历,map 不会自动穿过一层数组去取内层字段
- 元素缺该属性时返回 nil,直接 join 就只剩分隔符,看起来像整段没渲染
- 对 Hash 结构使用 map 得到的是键值对数组,不是某个字段的值
处理步骤#
- 先输出
{{ collection.products.first | json }},确认价格字段挂在 product 还是 variant 上 - 需要变体价格时改用循环:
{% for v in product.variants %}{{ v.price }}{% endfor %},map 无法跨层 - 只要每件商品的最低价,直接用
product.price_min,不必绕到变体数组 - 输出前补
| compact去掉 nil,避免出现连续逗号 - 字段名按对象文档写全小写,如
price_min而不是priceMin
验收标准#
集合页源码中价格数组的逗号数量与商品数一致,每个值都是数字;无价格的商品被 compact 过滤,不再留下空位。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。