Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

Здравствуйте. Подскажите пожалуйста.

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

Link to post
Share on other sites

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

Edited by anboza
Link to post
Share on other sites
31 минуту назад, anboza сказал:

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

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

Link to post
Share on other sites

@YaroslavNovik в админке...

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

Совершенно верно, в корзину все равно добавляет. Это решение не подойдёт.

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

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

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

Link to post
Share on other sites

# ./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>');
}

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

Link to post
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 post
Share on other sites

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

ну чтоб лучше помочь нужна ссылка на сайт

 

goldensmoke.com.ua

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

Edited by PiratRu
Link to post
Share on other sites

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

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

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

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

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

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

Link to post
Share on other sites

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

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

 

Вся причина в том, что Вы используете 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;
}

 

Link to post
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 post
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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • 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.