首先,我总是喜欢发布可运行的示例,但是由于这是一个js和服务器端在shopify上呈现的liquid的混合体,我不能得到一个运行的示例。
在shopify中,可以像{{ product }}
一样从产品模板中访问product
对象。
购物车对象具有items
属性,该属性是购物车中所有项目的数组。购物车中的每个item
对象都不同于product
对象。product
对象具有变量列表,而购物车item
对象没有。
这样做的目的是为了能够编辑购物车中项目的大小。
我的问题是,你怎么才能得到所有的链接变量呢?你必须移动到产品,得到一个所有变量的列表,从变量到product_id
。
这很棘手,因为当你得到cart对象的fetch响应时,你会得到cart中每个item
的一个product_id
,但是除非你在产品页面上,否则你不能得到产品对象。
为了帮助形象化购物车,请看下面的内容:
{
items: [
{
handle: 'product-handle',
product_id: 123,
variant_title: 'product variant'
}
]
}
需要完成的是:
{
items: [
{
handle: 'product-handle',
product_id: 123,
/**
* to get this you need first access to the product object from the product
* template. You could convert the product to json with a filter
* e.g. const product = {{ product | json }} but you don't have the
* opportunity to be on the product template each time you edit a cart item
*/
variants: [
{ color: 'white', size: 's' },
{ color: 'white', size: 'm' }
]
}
]
}
2条答案
按热度按时间tyg4sfes1#
如果你有一个产品ID或句柄,你可以自由地打电话给Shopify来获得关于产品的更多信息,比如分配给它的所有变体,因此,所有的选项。所以要改变到一个不同的选项,你需要从购物车中删除一个变体ID,并添加一个不同的。你想要的。你可以使用StorefrontAPI调用来获取产品信息。这通常是商家做你需要做的事情的方式。
hkmswyz62#
在与这个斗争了一整天之后,我终于得到了它。对于任何其他曾经遇到这个的人,你需要做这样的事情。
来自购物车模板
cart.liquid
现在,购物车中的每个项目属性都有了变量。