2

opencart 2.x の ajax を使用して、在庫制限を超えて商品をカートに追加することを無効にしたいのですが、opencart はヘッダーに「*** でマークされた商品は、希望する数量または在庫がありません!」というメッセージのみを表示します。しかし、在庫よりも多くの注文があった場合、商品をカートに追加しないようにしたいのですが、openacart の商品は時間がかかるだけでなく、バ​​イヤーが何度も何度も変更を加えることができません。

catalog/controller/api/cart.php、common.js、またはsystem/lirary/cart.phpで開始するかどうかを試しましたが、どこを変更すればよいかわかりません。このコードを試してください-

     if ((int)$qty && ((int)$qty > 0)) {
        if( ($this->session->data['cart'][$key])==(int)$product['stock']){

        }
        else{
            if (!isset($this->session->data['cart'][$key])) {
            $this->session->data['cart'][$key] = (int)$qty;
        } else {
            $this->session->data['cart'][$key] += (int)$qty;
        }
        }

    }
4

2 に答える 2

2

あなたの質問が理解できましたら、お客様がカートに在庫以上のものを追加できないようにしたいですか?

編集 OpenCart 2.0.2.0 をチェックインした後、コードを更新しました。

OK では、最初にcontroller/checkout/cart.php行の前に

if ($json)

add()関数で。

以下が必要です。

$quantity_in_cart = 0;

$products = $this->cart->getProducts();
foreach ($products as $product) {
    if ($product['product_id'] == $product_id) {
        $quantity_in_cart = $product['quantity'];
        break;
    }
}

if (($quantity + (int)$quantity_in_cart) > $product_info['quantity']) {
    $json['error']['stock'] = $this->language->get('error_not_enough_stock');
}

次にproduct.tpl、追加が失敗した場合にエラーを表示するコードを Javascript に追加する必要があります。関数に配置する必要があります

$('#button-cart').on('click', function() {

行の後に...

if (json['error']['recurring']) {
    $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>');
}

追加されたコードは...

if (json['error']['stock']) {
    $('.breadcrumb').after('<div class="alert alert-danger">' + json['error']['stock'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');
}

もちろん、製品をカートに追加する他の tpl にも同様のコードを追加する必要があります。また、オプション付きの製品がある場合はさらに複雑になりますが、これが基本です。

于 2015-10-12T10:09:51.837 に答える
1

このコントローラーを使用してカートに製品を追加/更新する Opencart / 関数
カタログ > コントローラー > チェックアウト > cart.php
関数 - 追加 / 編集

したがって、これらの関数に条件を追加する必要があります

add 関数コードの前にこれを追加します

        if (!$json) {

追加機能で

        if($quantity > $product_info['quantity'])
            $json['warning'] = $this->language->get('error_stock');

顧客が追加した数量が利用可能な数量を超えていないかどうかを確認します。

次に、エラーの js コードをカタログ > ビュー > テーマ > テーマ (私のデフォルト) > 製品 > product.tpl ファイルに追加します。

else if(json['warning']) {
    $('#content').parent().before('<div class="alert alert-danger"><i class="fa fa-check-circle"></i> ' + json['warning'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');

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

この ajax の最後に

$('#button-cart').on('click', function() {

Bazinga、あなたは行く準備ができています、製品はカートに追加されません:)

注 - vqmod/ocmod を使用してください。

于 2015-10-12T12:41:24.930 に答える