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 重名时,取到的是系统属性而不是自定义字段
处理步骤#
- 先
{{ product.metafields.custom.spec.value | json }}看真实字段名 - 取值改成
{{ product.metafields.custom.spec.value.material }},去掉多余 value - list 字段用
{% for f in mo.material %}{{ f }}{% endfor %}逐项输出 - 系统属性走
mo.system.type,不要直接写mo.type - GraphQL 用
reference{ ... on Metaobject { field(key: "material"){ value } } }
验收标准#
前台输出材质文本而不是空白;| json 里的 key 与 Liquid 中写的完全一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。