Перейти к содержанию
YaroslavNovik

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

Рекомендуемые сообщения

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем anboza

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, anboza сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, PiratRu сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, fanatic сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, ActiveSync сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
34 минуты назад, prived сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
# ./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>');
}

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 (нет разницы куда именно?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, prived сказал:

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

 

goldensmoke.com.ua

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Изменено пользователем PiratRu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, prived сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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;
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.