如何在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
相关产品推荐
相关产品推荐

