防止 'Add to cart' 如果数量超过库存

Prevent 'Add to cart' If quantity Exceeds than stock

我想在 opencart 2.x 中通过 ajax 禁止将超出库存限制的产品添加到购物车,现在 opencart 仅在 header "Products marked with *** are not available in the desired quantity or not in stock!" 上显示一条消息。 但是我希望如果订购的产品比库存的多,就不要将产品添加到购物车,现在 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;
        }
        }

    }

如果我理解你的问题,你想阻止客户向他们的购物车添加超过剩余库存的商品吗?

编辑 我在检查 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 添加类似的代码,当您拥有带有选项的产品时,事情会变得更加复杂,但这是它的基础。

Opencart 使用此控制器/功能将产品添加/更新到购物车
目录 > 控制器 > 结账 > cart.php
功能 - 添加/编辑

所以你必须给这些函数加上条件

在添加函数代码之前添加这个

        if (!$json) {

在添加函数中

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

它会检查客户添加的数量是否不超过可用数量。

然后在目录>查看>主题>你的主题(我的默认)>产品>product.tpl文件

中添加错误的js代码
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。