Shopify 应用与扩展

应用写入的 metafield 前台读出来是空的

现象#

应用用 metafieldsSet 写了 $app 命名空间的保修信息,后台商品页能看到值,前台 Liquid 输出的 product.metafields.app.warranty 却是空。

原因#

  • 主题里要写完整命名空间 app--{app-id}--key,app 前缀只在扩展内解析
  • 定义没开 storefront 访问,Storefront API 查询返回 null
  • 定义只写在 TOML 里但没有 deploy,字段还是没有类型的裸 metafield
  • 在 app block 内照抄主题写法,扩展里应该用 app.metafields

处理步骤#

  1. 在 toml 定义 [product.metafields.app] 并写清 type
  2. 用 metafieldDefinitionUpdate 把 storefront 访问设为 PUBLIC_READ
  3. 执行 shopify app deploy 让定义在店铺生效
  4. 主题改成 metafields["app--{app-id}--key"] 读取
  5. 扩展内改用 {{ app.metafields.warranty.value }} 输出

验收标准#

前台商品页显示保修文案,Storefront API 查同一字段返回非 null。

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