Opencart:如何使用不同的选项将同一产品添加到购物车两次?

Opencart:如何使用不同的选项将同一产品添加到购物车两次?,opencart,options,product,Opencart,Options,Product,我现在正在努力让它工作一段时间 我的产品是隐形眼镜,当您想订购时,您需要填写一些选项,如半径、厚度、屈光度等两次(左眼和右眼) 我想当我按Add to cart时,在购物车中添加两次相同的产品(第一次是左眼选项,第二次是右眼选项) 这在Opencart中可能吗?基本上,您希望(对于某些产品)在屏幕上显示两次所有的产品信息和选项,并在单击“添加到购物车”时将这两个集合添加到购物车中,因此它们显示为单独的产品 在某些条件下重复这些选项是相当简单的 遗憾的是,OpenCart的AddtoCart只需要

我现在正在努力让它工作一段时间

我的产品是隐形眼镜,当您想订购时,您需要填写一些选项,如半径、厚度、屈光度等两次(左眼和右眼)

我想当我按Add to cart时,在购物车中添加两次相同的产品(第一次是左眼选项,第二次是右眼选项)

这在Opencart中可能吗?

基本上,您希望(对于某些产品)在屏幕上显示两次所有的产品信息和选项,并在单击“添加到购物车”时将这两个集合添加到购物车中,因此它们显示为单独的产品

在某些条件下重复这些选项是相当简单的

遗憾的是,OpenCart的AddtoCart只需要一组产品数据。它预计有四个方面:

  • 通过Ajax提交选项的jQuery脚本
  • 实际从Ajax提交中添加产品的例程
  • 从标准表单提交中添加产品的例程
  • 上面写着“成功!你把邦戈隐形眼镜加入你的购物车!”
即使如此,在添加产品的代码中,也存在一组产品选项的假设

有相当多的代码可能需要更改——以及您通常不想弄乱的东西

但是有一种方法

假设您不想弄乱index.php?route=checkout/cart/add,并且希望将代码保存在product.tpl模板和JavaScript中

您首先需要做的是将产品输入(包括隐藏输入)包装在一个具有唯一类(例如.lens left)的div中,并使用该类名替换行中.product info的每个实例:

data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
接下来,编写一些加载时在相关产品页面上激发的JS,并:

  • 使用类lens right添加新的div,并将lens left的内容复制到其中
  • 绑定到cart按钮的第二个Ajax调用与标准调用完全相同,但使用第二个集合的类名
  • 所有这些就绪后,单击“添加到购物车”将第一个产品添加到购物车,然后将第二个产品添加到购物车。按顺序而不是一起执行这一操作意味着您一次只传递一组数据。使用JS添加第二个集合意味着没有JS的用户看不到它

    这可以通过让加载的JS添加一个按钮来进一步改进,该按钮会显示“我的左眼和右眼需要不同的镜头”,然后会触发所有其他镜头。

    基本上,您希望(对于某些产品)在屏幕上两次显示所有产品信息和选项,并在单击“添加到购物车”时将这两组镜头添加到购物车中,因此,它们作为单独的产品出现

    在某些条件下重复这些选项是相当简单的

    遗憾的是,OpenCart的AddtoCart只需要一组产品数据。它预计有四个方面:

    • 通过Ajax提交选项的jQuery脚本
    • 实际从Ajax提交中添加产品的例程
    • 从标准表单提交中添加产品的例程
    • 上面写着“成功!你把邦戈隐形眼镜加入你的购物车!”
    即使如此,在添加产品的代码中,也存在一组产品选项的假设

    有相当多的代码可能需要更改——以及您通常不想弄乱的东西

    但是有一种方法

    假设您不想弄乱index.php?route=checkout/cart/add,并且希望将代码保存在product.tpl模板和JavaScript中

    您首先需要做的是将产品输入(包括隐藏输入)包装在一个具有唯一类(例如.lens left)的div中,并使用该类名替换行中.product info的每个实例:

    data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
    
    接下来,编写一些加载时在相关产品页面上激发的JS,并:

  • 使用类lens right添加新的div,并将lens left的内容复制到其中
  • 绑定到cart按钮的第二个Ajax调用与标准调用完全相同,但使用第二个集合的类名
  • 所有这些就绪后,单击“添加到购物车”将第一个产品添加到购物车,然后将第二个产品添加到购物车。按顺序而不是一起执行这一操作意味着您一次只传递一组数据。使用JS添加第二个集合意味着没有JS的用户看不到它

    这可以进一步改进,让加载JS改为添加一个按钮,上面写着“我的左眼和右眼需要不同的镜片”,然后会触发所有其他东西