我想禁用通过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;
}
}
}
答案 0 :(得分:2)
如果我理解您的问题,您希望阻止客户在购物车中添加的商品数量超过剩余库存数量?
修改强> 我在检查OpenCart 2.0.2.0后更新了代码。
好的,首先在行前的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中,当您获得带有选项的产品时,事情会变得更加复杂,但这是它的基础知识。
答案 1 :(得分:1)
Opencart使用此控制器/功能将产品添加/更新到购物车
目录&gt;控制器&gt;结帐&gt; cart.php
功能 - 添加/编辑
所以你必须为这些功能添加条件
在添加功能代码
之前添加此项 if (!$json) {
添加功能
if($quantity > $product_info['quantity'])
$json['warning'] = $this->language->get('error_stock');
它将检查客户添加的数量是否超过可用数量。
然后在目录&gt;中添加错误的js代码视图&gt;主题&gt;你的主题(我的默认)&gt;产品&gt; 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">×</button></div>');
$('html, body').animate({ scrollTop: 0 }, 'slow');
}
在这个ajax的最后一行
$('#button-cart').on('click', function() {
Bazinga,你准备好了,产品不会加入购物车:)
注意 - 请使用vqmod / ocmod。