在Shopify中,如何通过url

时间:2019-05-04 20:32:40

标签: shopify shopify-app shopify-template

我知道您可以在Shopify中添加以下多个产品:

/cart/add?id[]=VARIANT_ID1&id[]=VARIANT_ID2

我的问题是,您将如何调整要添加的每种产品的数量?

例如,我希望VARIANT_ID1的数量为2,而VARIANT_ID2的数量为1?

我尝试过:

/cart/add?id[]=VARIANT_ID1&quantity=2&id[]=VARIANT_ID2&quantity=1

但是它只是使所有事物的数量为1。

3 个答案:

答案 0 :(得分:2)

您不能将数量用作每个变体的单独项目。

您有一些选择,但是它们都有一些缺点。

有关请求,请参考此文档:https://help.shopify.com/en/themes/development/getting-started/using-ajax-api

使用/cart/add.js

您可以创建多个AJAX请求,并将每个单独的项目添加为新的AJAX请求。

优点:

  • 如果已经存在,则不会影响购物车中的产品

缺点:

  • AJAX请求太多

使用/cart/update.js

您可以提出一个请求,并将不同的数量传递给每个变体。

专业人士

  • 通过单个AJAX请求以不同数量保存所有变体

缺点

  • 如果购物车中已经添加了产品,您将覆盖其数量

因此解决方案可能是获得cart.js响应检查是否存在当前变体,然后在将数量添加到现有变体的同时创建update.js。所以不是那么简单。

我想不出更简单的解决方案,但是最后您可能需要最少2个AJAX调用才能添加不同的数量。

答案 1 :(得分:1)

更简单的方法是使用 Shopify 永久链接。

购物车固定链接将您的客户直接带到结账屏幕的第一页,其中商品已预先加载到他们的购物车中。

这是购物车永久链接的样子:

http://your-store.myshopify.com/cart/70881412:1,70881382:1

其中 70881412 是产品变体的唯一 ID,1 是数量。

所以url的格式是:

http://yourstore.com/cart/#{variant_id}:#{quantity}(,...)

答案 2 :(得分:0)

我使用以下代码片段解决了这个问题:

// Creates ArrayList for totals ArrayList <Double> totals = new ArrayList <Double>(); // While loop to read each row from file while (inputFile.hasNext()) { String currentLine = inputFile.nextLine(); String[] fields = currentLine.split("[,]"); quarter = Integer.parseInt(fields[0]); region = fields[1]; if (fields.length == 4) { // If block to give indexes to field lengths of 4 and 5 typeIndex = 2; dollarIndex = 3; } else { typeIndex = 3; dollarIndex = 4; } govtType = fields[typeIndex]; if (fields[1].equals("U.S. TOTAL")) { break; } if (region.contains("Statewide") || govtType.contains("Federal Government") || govtType.contains("State Government")) { // if block to convert last index into double dollar = Double.parseDouble(fields[dollarIndex]); } if (quarter == 1 && govtType.contains("Federal Government")) { // If block to get sum of last index of certain arrays sum += dollar; totals.add(sum); System.out.println(totals); } } // While loop end