防止 '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">×</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">×</button></div>');
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
最后一行 ajax
$('#button-cart').on('click', function() {
Bazinga,您可以开始了,产品不会添加到购物车:)
注意 - 请使用 vqmod/ocmod。
我想在 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">×</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">×</button></div>');
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
最后一行 ajax
$('#button-cart').on('click', function() {
Bazinga,您可以开始了,产品不会添加到购物车:)
注意 - 请使用 vqmod/ocmod。