Shopify获取全部产品时返回ProductDrop列表的原因咨询
为什么你得到的是"ProductDrop"列表?
这事儿其实是Shopify Liquid引擎的特性导致的——当你直接用{{ product }}输出一个产品对象时,你看到的ProductDrop是这个对象的包装类标识。
Shopify会把后端的产品数据用ProductDrop这类Drop类封装起来,一方面是为了安全(只暴露前端允许访问的属性/方法),另一方面是统一Liquid对象的访问逻辑。直接输出整个对象的话,Liquid就会返回这个包装类的名称,而不是你期望的产品具体数据。
看你这段代码:
{% for product in collections.all.products %} products.push('{{ product }}') {% endfor %}
你把{{ product }}直接作为字符串塞进了数组,所以每一项自然都是"ProductDrop"了。
怎么解决?
你需要明确指定要获取的产品属性,或者把产品序列化成JSON格式:
- 如果你只需要产品ID:用
{{ product.id }} - 想要产品标题:用
{{ product.title }} - 要完整的产品数据(方便JS处理):用
json过滤器把对象转成JSON字符串,比如:
{% for product in collections.all.products %} products.push({{ product | json }}); {% endfor %}
这样你的products数组里就会是包含每个产品详细信息的对象,而不是那个看起来没用的类名了。
内容的提问来源于stack exchange,提问作者Luis Montano
相关产品推荐
相关产品推荐

