Shopify 商品与变体

metaobject 字段多写一层 value 就变成空怎么改

现象#

规格表做成 metaobject 后,{{ product.metafields.custom.spec.value.material }} 输出空,但 {{ product.metafields.custom.spec.value }} 能打印出整块对象。

原因#

  • metafield 的 .value 已经返回 metaobject drop,再取字段不需要第二层 value
  • metaobject 字段名由创建时的 key 决定,中文名会被转成下划线形式
  • 字段本身是 list 类型时取到的是数组,还要再遍历一层
  • 字段 key 与 system、handle、type 重名时,取到的是系统属性而不是自定义字段

处理步骤#

  1. 先 {{ product.metafields.custom.spec.value | json }} 看真实字段名
  2. 取值改成 {{ product.metafields.custom.spec.value.material }},去掉多余 value
  3. list 字段用 {% for f in mo.material %}{{ f }}{% endfor %} 逐项输出
  4. 系统属性走 mo.system.type,不要直接写 mo.type
  5. GraphQL 用 reference{ ... on Metaobject { field(key: "material"){ value } } }

验收标准#

前台输出材质文本而不是空白;| json 里的 key 与 Liquid 中写的完全一致。

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