Opencart - 'Add to cart' 按钮错误地将 x2 产品添加到购物车

Opencart - 'Add to cart' button adding x2 products to cart incorrectly

我全新安装了 Opencart 1.5.6.4 - link 是 here

在我的所有产品页面(不是类别页面)上 - 当您单击 'add to cart' 时,它会添加 x2 的所有内容。

我已经尝试 re-creating 具有新 SEO 标题、标题、产品、新型号的产品 - 但它仍然两次将其添加到我的购物车?

有什么想法吗?任何帮助将不胜感激。

这绝对是与 mmenu jquery 用于导航栏并包含在内的扩展的冲突或错误作为jquery.mmenu.min.all.js.

注释掉以下行:

$('nav#menu').mmenu();

您会看到购物车按钮功能正常。不幸的是,这会破坏您的导航栏。我希望我能告诉你更多,但也许值得联系该扩展的开发者:

http://mmenu.frebsite.nl/support/problem-solving.html

或在此处提交问题:

https://github.com/BeSite/jQuery.mmenu/issues

由于您似乎是 运行 最新版本,如果确实存在错误,则尚未修复。我已经将 mmenu 标签添加到您的问题中,希望能引起有答案的人的注意。祝你好运。

[已解决]

On all my product pages (not the category pages) - when you click 'add to cart' it adds x2 of everything.

您将有两个函数来控制添加到购物车按钮。适当的 placement/execution 代码会产生不同的结果。请参阅下面的代码片段。

第一个发现在/catalog/view/javascript/common.js:

function addToCart(product_id) {
    $.ajax({
            url: 'index.php?route=checkout/cart/add',
            type: 'post',
            data: 'product_id=' + product_id,
            dataType: 'json',
            success: function(json) {

第二个通常可以在 /catalog/view/theme/template/yourtheme/product/product.tpl:

中找到
$('#button-cart').bind('click', function() {
$.ajax({
    url: 'index.php?route=checkout/cart/add',
    type: 'post',
    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'),
    dataType: 'json',
    success: function(json) {

如果您注意到代码的 data: 部分。一个是检查选项然后添加到购物车,另一个只是添加到购物车。

这段代码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'), 正在检查选项,然后添加到购物车。这通常用于产品详细信息页面 (product.tpl)。 这段代码 data: 'product_id=' + product_id, 直接将产品添加到购物车,通常用于网站的其他地方(产品详细信息页面除外)。用户只需将商品添加到购物车,然后结帐即可。

您将 2 件商品 添加到购物车的原因是您正在使用检查选项然后添加到购物车的代码片段。要使任何添加到购物车按钮仅将一件商品放入购物车(不检查选项),您需要使用 data: 'product_id=' + product_id,

看起来像这样

$('#button-cart').bind('click', function() {
$.ajax({
url: 'index.php?route=checkout/cart/add',
type: 'post',
data: 'product_id=' + product_id,
dataType: 'json',
success: function(json) {