1

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

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

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

这在 Opencart 中可行吗?

4

1 回答 1

1

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

在某些条件下重复这些选项是相当微不足道的。

然而遗憾的是,OpenCart 的 Add To Cart 只需要一组产品数据。它期望在四个地方做到这一点:

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

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

有很多代码可能需要更改 - 以及您通常不想弄乱的东西。

但是有办法。

让我们假设您不想弄乱 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,并且:

  1. 添加一个具有 lens-right 类的新 div 并将 lens-left 的内容复制到其中。
  2. 将第二个 Ajax 调用绑定到购物车按钮,该调用是标准调用的精确副本,但使用第二组的类名。

完成所有这些后,单击“添加到购物车”会将第一个产品添加到购物车,然后将第二个产品添加到购物车。按顺序而不是一起执行此操作意味着您一次只传递一组数据。使用JS添加第二套意味着没有JS的用户看不到它。

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

于 2012-11-16T17:53:35.707 回答