应用写入的 metafield 前台读出来是空的
现象#
应用用 metafieldsSet 写了 $app 命名空间的保修信息,后台商品页能看到值,前台 Liquid 输出的 product.metafields.app.warranty 却是空。
原因#
- 主题里要写完整命名空间 app--{app-id}--key,app 前缀只在扩展内解析
- 定义没开 storefront 访问,Storefront API 查询返回 null
- 定义只写在 TOML 里但没有 deploy,字段还是没有类型的裸 metafield
- 在 app block 内照抄主题写法,扩展里应该用
app.metafields
处理步骤#
- 在 toml 定义
[product.metafields.app]并写清 type - 用 metafieldDefinitionUpdate 把 storefront 访问设为 PUBLIC_READ
- 执行
shopify app deploy让定义在店铺生效 - 主题改成
metafields["app--{app-id}--key"]读取 - 扩展内改用
{{ app.metafields.warranty.value }}输出
验收标准#
前台商品页显示保修文案,Storefront API 查同一字段返回非 null。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。