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

私の知る限り、[カートに追加] コード ボタンは、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>

ただし、ID および Class 子要素が新しい DIV 移動内でサポートされていることを確認して.product-infoください#cart。なんで?この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 に答える
0

アップデート

カートに入れるボタンを「動かす」ということですか?または単に既存のものをコピーして、ページに 2 つの #button-cart があるようにしますか?

最初の場合、@TheBlackBenzKid のソリューションは期待どおりに機能するはずです。ただし、既存のボタンをコピーする場合は、クラス (.button-cart) を使用するようにセレクターを変更する必要があります。これが助けになることを願っています。

返事が遅れて申し訳ありません。あなたの答えに基づいて:

ページに2つのボタンがあるように、既存のものをコピーしたいと思います

クラス(.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 に答える