You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shopify Liquid中访问购物车商品关联Metaobject及使用GID?

在Shopify Liquid中访问购物车商品关联的Metaobject数据

你遇到的核心问题是:存储在metafield里的Metaobject GID是JSON格式的字符串,并非Liquid原生可遍历的数组,直接循环自然没有输出;另外你代码里还存在变量名不匹配的问题(用了upsell_to但实际字段是object_upsell),这也会导致无结果。

以下是正确的实现步骤:

1. 解析JSON字符串为Liquid数组

先用json过滤器把metafield里的JSON字符串转换成Liquid可操作的数组,这样才能遍历每个GID:

{% for item in cart.items %}
  {% if item.product.metafields.custom.object_upsell %}
    <!-- 将JSON字符串转成Liquid数组 -->
    {% assign metaobject_gid_array = item.product.metafields.custom.object_upsell | json %}
    
    {% for gid in metaobject_gid_array %}
      <!-- 输出单个GID -->
      {{ gid }}

      <!-- 通过GID获取完整的Metaobject数据 -->
      {% assign target_metaobject = gid | metafield %}
      {% if target_metaobject %}
        <!-- 访问Metaobject的自定义字段,示例假设字段名为title、price -->
        <div class="metaobject-data">
          <h4>{{ target_metaobject.title }}</h4>
          <p>价格:{{ target_metaobject.price | money }}</p>
        </div>
      {% endif %}
    {% endfor %}
  {% endif %}
{% endfor %}

关键说明

  • JSON转数组:Shopify的metafield如果存储的是数组类数据,会以JSON字符串形式保存,必须用json过滤器解析后才能在Liquid中遍历
  • 通过GID获取Metaobject:使用metafield过滤器传入GID,就能直接拿到对应的Metaobject实例,之后可以直接访问它的所有自定义字段(字段名要和你创建Metaobject时定义的一致)
  • 变量名匹配:确保你调用的metafield键名和后台设置的完全一致(比如你后台是object_upsell,就不要写成upsell_to)

内容的提问来源于stack exchange,提问作者anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:23:27