Shopify 商品与变体

列表型 metafield 在主题里只输出一个商品怎么办

现象#

给商品配了 4 个相关商品的 list.product_reference,前台只显示 1 个,其余为空;换成 list.metaobject_reference 后整块空白。

原因#

  • list 类型的 .value 返回数组,直接输出会把所有项拼成一串而不是逐个渲染
  • reference 类型的 .value 给的是引用对象,不是 ID 字符串
  • 空数组在 Liquid 里为真,用 if metafield.value 判断不出有没有内容
  • 引用目标被删除或设为 Draft 后,数组里对应项变成 nil 但仍占位

处理步骤#

  1. 先 assign items = product.metafields.custom.related.value 拿到数组
  2. 用 {% for item in items %}{{ item.title }}{% endfor %} 逐个取字段
  3. 判空改用 items.size > 0,不要用真假值判断
  4. 循环里加 {% if item != blank %},跳过已被删除的引用
  5. GraphQL 侧用 references(first: 10) 取对象,别解析 value 里的 JSON

验收标准#

前台渲染数量等于后台配置的 4 个;删掉其中一个引用后剩 3 个且页面不报错。

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