1

我试图在 Opencart 版本 1.5.4 的产品描述底部插入一个购物车按钮,并使用默认主题。

我查看了特定产品的源代码,并将此信息从源代码复制到产品描述的底部。

       <div class="cart">
    <div>Qty:          <input type="text" name="quantity" size="2" value="1" />
      <input type="hidden" name="product_id" size="2" value="85" />
      &nbsp;
      <input type="button" value="Add to Cart" id="button-cart" class="button" />
    </div>
    <div><span>&nbsp;&nbsp;&nbsp;- OR -&nbsp;&nbsp;&nbsp;</span></div>
    <div><a onclick="addToWishList('85');">Add to Wish List</a><br />
      <a onclick="addToCompare('85');">Add to Compare</a></div>
          </div>

当我单击添加到购物车按钮时,没有任何反应。

但是,当我单击添加到愿望清单并比较时,该产品将添加到相应的列表中。

我错过了什么?

我应该使用不同的代码吗?

谁能帮我解决这个问题?

4

3 回答 3

1

畅你添加到购物车按钮,用这个 <a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button"><?php echo $button_cart; ?></a>

希望它对你有用。

于 2015-03-23T05:54:51.020 回答
0

更新

您的意思是“移动”添加到购物车按钮吗?还是简单地复制现有的一个,以便您的页面中有两个#button-cart?

如果是第一个,@TheBlackBenzKid 的解决方案应该可以按您的预期工作。但是,如果要复制现有按钮,则应修改选择器,使其使用类 (.button-cart)。我希望这会有所帮助。

这么晚才回复很抱歉。根据您的回答:

我想复制现有的,以便页面中有两个按钮

的意思是修改选择器以便它使用类(.button-cart)是你应该改变你的ajax触发器以匹配2个选择器(因为现在你有2个'触发器',顶部的“添加到购物车”和底部的那个你复制到)。

首先将您的添加到购物车修改为<input type="button" value="Add to Cart" id="" class="button-cart button" />

看,我们不再使用id="button-cart",而是使用button-cart我们的类属性(class="button-cart button")。通过使用类,我们可以声明另一个具有相同类的元素(即产品描述底部的“添加到购物车”按钮)。

然后修改您的 Ajax 脚本。原始的ajax脚本是:

$('#button-cart').bind('click', function() {
$.ajax({
// another code

});

改成:

$('.button-cart').bind('click', function() {
$.ajax({
// another code

});

id 使用#和类使用.。我希望这对你有帮助。

于 2013-03-08T13:20:47.693 回答
0

据我所知,添加到购物车代码按钮使用一个在 DIV 中链接的 ID。所以 jQuery 不是在寻找 #button-cart - 它是在寻找例如购物车。addform #button-cart 以及您还缺少一些需要嵌套的变量.. 也请使用完整版本的 product.tpl 更新您的帖子

这是您需要用于移动“添加到购物车”按钮的代码:

  <div class="cart">
    <div><?php echo $text_qty; ?>
      <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" />
      <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" />
      &nbsp;
      <input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
      <span>&nbsp;&nbsp;<?php echo $text_or; ?>&nbsp;&nbsp;</span>
      <span class="links"><a onclick="addToWishList('<?php echo $product_id; ?>');"><?php echo $button_wishlist; ?></a><br />
        <a onclick="addToCompare('<?php echo $product_id; ?>');"><?php echo $button_compare; ?></a></span>
    </div>
    <?php if ($minimum > 1) { ?>
    <div class="minimum"><?php echo $text_minimum; ?></div>
    <?php } ?>
  </div>

但请确保在您的新 DIV 移动中支持.product-infoand #cartID 和 Class 子元素。为什么?看看这个 jQuery,它依赖于它们来找到值 - 话虽如此 - 你也可以改变它。

$('#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) {
            $('.success, .warning, .attention, information, .error').remove();

            if (json['error']) {
                if (json['error']['option']) {
                    for (i in json['error']['option']) {
                        $('#option-' + i).after('<span class="error">' + json['error']['option'][i] + '</span>');
                    }
                }
            } 

            if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

                $('.success').fadeIn('slow');

                $('#cart-total').html(json['total']);

                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
            }   
        }
    });
});

根据您的需要更新版本将是:

/*
Notice I have changed the DIV to assign div#cart
So it looks for <div id="cart">
But make sure options are available for the error response
and validation
*/

$('#button-cart').bind('click', function() {
    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: $('div#cart input[type=\'text\'], div#cart input[type=\'hidden\'], div#cart input[type=\'radio\']:checked, div#cart input[type=\'checkbox\']:checked, div#cart select, div#cart textarea'),
        dataType: 'json',
        success: function(json) {
            $('.success, .warning, .attention, information, .error').remove();

            if (json['error']) {
                if (json['error']['option']) {
                    for (i in json['error']['option']) {
                        $('#option-' + i).after('<span class="error">' + json['error']['option'][i] + '</span>');
                    }
                }
            } 

            if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                $('.success').fadeIn('slow');
                $('#cart-total').html(json['total']);
                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
            }   
        }
    });
});
于 2013-03-08T11:42:46.570 回答