每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 1 个月前

商品 metafield 后台有值,页面上输出为空

2 个回答 436 次浏览 主题与 Liquid 最后活跃 1 个月前
56

后台商品的自定义字段「材质」已经填了内容,模板里写 {{ product.metafields.custom.material }} 什么都输出不出来。

L
Lily提问者
DTC 品牌独立站运营负责人
1 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
74

先把判断放在前面:新版 metafield 定义默认带类型,必须用 .value 取值;直接输出对象只会得到空字符串或 MetafieldDrop。

1处理顺序

  1. 改成 {{ product.metafields.custom.material.value }},绝大多数情况这一步就解决了。
  2. 确认 namespace 和 key:custom 是命名空间,material 是键,后台定义时如果建在别的命名空间下,路径就不同。
  3. 检查该 metafield 定义的「在店面中可见」是否开启,未开启时 Storefront 和主题都读不到。
  4. 如果字段类型是 list,需要循环输出:{% for item in product.metafields.custom.material.value %}。
  5. 用 {{ product.metafields.custom | json }} 在预览里打印整个命名空间,确认键名拼写。
验收:页面上输出与后台填写一致的文本;list 类型能按顺序逐个输出。
风 风格技术团队 回答于 1 个月前
6

还要区分「商品级」和「变体级」:变体 metafield 在 variant.metafields 下,写在 product.metafields 里当然取不到,这个错很常见。

泽 阿泽 · 前端工程师 · 1 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu