Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Как в opencart 2.3 настроить запрет на добавление в корзину товара в котором количество 0


 Share

Recommended Posts

31 минуту назад, anboza сказал:

воспользуйтесь поиском по темам. за месяц, разов 6-7 обсуждали уже.

Нашлось решение? Не могу найти. Скиньте ссылочку. Заранее спасибо.

Link to comment
Share on other sites


1 час назад, PiratRu сказал:

Система/Настроки/Опции/Оформлять заказы при нехватке товаров

но,  в корзину то все равно добавит

Link to comment
Share on other sites

выведите в карточку товара значение поля количество и сделайте скрипт на js 

if ( $('input#quant').val() == 0) { $('.btn-cart).что убираем) } 

или же в карточку добавить условие на php

Link to comment
Share on other sites


1 час назад, ActiveSync сказал:

@YaroslavNovik Вам именно нужно кнопку неактивной сделать, либо же неактивной + свой текст?

Спасибо за подсказку. Можно более подробней что и где изменить или добавить. 

Link to comment
Share on other sites


34 минуты назад, prived сказал:

выведите в карточку товара значение поля количество и сделайте скрипт на js 

if ( $('input#quant').val() == 0) { $('.btn-cart).что убираем) } 

или же в карточку добавить условие на php

Спасибо. Можно более подробней что и где нужно заменить.

Link to comment
Share on other sites


29 минут назад, Designer сказал:
# ./catalog/controller/checkout/cart.php

# Найти
if (isset($this->request->post['quantity']) && ((int)$this->request->post['quantity'] >= $product_info['minimum'])) {
	$quantity = (int)$this->request->post['quantity'];
} else {
	$quantity = $product_info['minimum'] ? $product_info['minimum'] : 1;
}

# добавить ниже
if ($product_info['quantity'] < 1) {
	$json['error']['quantity'] = $this->language->get('error_quantity');
}

Чтобы вывести информацию для клиента в виде сообщения, можете добавить в js
 

/*
	../common.js
	var cart
		'add':

	../product.tpl
	$('#button-cart').on('click', function() {
*/

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

п.с. ограничивать нужно в серверной части, а не на клиентской, как показывали выше.

Спасибо. Добавил верхний код в cart.php, но все равно можно добавить в корзину больше 0. Можно более подробней по второму коду "чтобы вывести информацию для клиента, можете добавить в js". Получается var cart 'add': добавляем сюда catalog/view/javascript/common.js (нет разницы куда именно?)

Link to comment
Share on other sites


if ($('span.journal-stock.outofstock').innerHTML === 'Нет в наличии') { alert('work')}

вот костыль дорабатывайте

перед тем как что то делать 0 исправьте все ошибки на сайте - полная консоль

И по возможности удалите свой шаблон 

Link to comment
Share on other sites


@fanatic странно, у меня кнопка Купить становится не активной, когда товара - 0! т.е. в корзинку не кинешь.

Наверное у каждого свои кастыли, а может от шаблона зависит.

Edited by PiratRu
Link to comment
Share on other sites


26 минут назад, prived сказал:

if ($('span.journal-stock.outofstock').innerHTML === 'Нет в наличии') { alert('work')}

вот костыль дорабатывайте

перед тем как что то делать 0 исправьте все ошибки на сайте - полная консоль

И по возможности удалите свой шаблон 

Ошибки появились когда добавлял предлагаемый код одного из пользователя PHP Develope, сейчас нет ошибок. Спасибо за костыль)) Но мне самому не разобраться.

Link to comment
Share on other sites


1 час назад, Designer сказал:

 

Вся причина в том, что Вы используете journal, данный шаблон меняет структуру ядра, и использует свои JS скрипты.

Мой пример показан для чистого ядра и шаблона default, но которая реализует то, что Вам нужно.

 

p.s. После всех изменений, обязательно чистить кеш модификаторов!

 

Ах да, у меня в примере, на нет в количестве в товара на складе...

Для кол-во 0, код будет такой:

 

# ./catalog/controller/checkout/cart.php

# Найти
if (isset($this->request->post['quantity']) && ((int)$this->request->post['quantity'] >= $product_info['minimum'])) {
	$quantity = (int)$this->request->post['quantity'];
} else {
	$quantity = $product_info['minimum'] ? $product_info['minimum'] : 1;
}

# Заменить
$quantity = 0;

if (empty($this->request->post['quantity'])) {
	$json['error']['quantity'] = $this->language->get('error_quantity');
} elseif ((int)$this->request->post['quantity'] >= $product_info['minimum']) {
	$quantity = (int)$this->request->post['quantity'];
} else {
	$quantity = $product_info['minimum'] ? $product_info['minimum'] : 1;
}

 

Спасибо большое Designer

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.