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

时间:2012-11-15 16:26:42

标签: opencart options product

我正试图让它工作一段时间。

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

我想按下添加到购物车,在购物车中添加两次相同的产品(第一个包含左眼选项,第二个包含右眼选项)。

这在Opencart中是否可行?

1 个答案:

答案 0 :(得分:1)

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

在某些条件下重复选项非常简单。

然而,遗憾的是,OpenCart的Add To Cart只需要一组产品数据。它预计在四个地方:

  • 通过Ajax提交选项的jQuery脚本
  • 实际添加Ajax提交产品的例程
  • 从标准表单提交中添加产品的例程
  • 说“成功!你把Bongo隐形眼镜添加到你的购物车!”的例程。

即使这样,在添加产品的代码中,也会假设有一组产品选项。

有很多代码需要更改 - 以及一般不想搞砸的东西。

但有一种方法。

让我们假设你不想搞乱index.php?route = checkout / cart / add,并希望将你的代码保存在product.tpl模板和JavaScript中。

首先需要做的是将产品输入(包括隐藏的输入)包装在具有唯一类的div中,例如.lens-left,并使用该类名代替.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,并且:

  1. 添加一个带有镜头右侧的新div并将镜头的内容复制到其中。
  2. 将第二个Ajax调用绑定到购物车按钮,该调用是标准调用的精确副本,但使用第二个集合的类名。
  3. 完成所有这些后,单击“添加到购物车”会将第一个产品添加到购物车,然后将第二个产品添加到购物车。按顺序而不是一起执行此操作意味着您一次只传递一组数据。使用JS添加第二个集意味着没有JS的用户看不到它。

    这可以进一步改进,通过使负载JS添加一个按钮,说“我的左眼和右眼需要不同的镜头”,这将触发所有其他的东西。