Rose debug info
---------------

OpenCart: как отключить кнопку покупки, когда товара нет в наличии

Когда товара нет в наличии, его, по умолчанию, можно добавить в корзину. В таком сценарии нет необходимости.

Что делать

  1. Открываем сайт/catalog/controller/product/product.php
  1. Находим код (~251 строка):
if ($product_info['quantity'] <= 0) {
	$data['stock'] = $product_info['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
	$data['stock'] = $product_info['quantity'];
} else {
	$data['stock'] = $this->language->get('text_instock');
}
  1. Перед ним добавляем:
$data['stock_quantity'] = $product_info['quantity'];
$data['text_out_of_stock'] = $product_info['stock_status'];
  1. В том же файле находим (~436 строка):
$data['products'][] = array(
…
);
  1. После скобки добавляем:
'quantity' => $result['quantity'],
'text_out_of_stock' => $result['stock_status'],
  1. Сохраняем, обновляем кэш.
  1. Открываем сайт/catalog/theme/тема/template/product/product.twig
  1. Находим код:
<button type="button" id="button-cart" data-loading-text="{{ text_loading }}" class="btn button-cart">{{ button_cart }}</button>
  • В завимости от темы, код может отличаться, но button-cart остаётся константой.
  1. Заменяем его на:
{% if stock_quantity < 1 %} 
    <button type="button" id="button-outstock" disabled="disabled" data-loading-text="{{ text_loading }}" class="btn button-cart"><i class="fa fa-exclamation-triangle"></i> {{ text_out_of_stock }}</button>
{% else %}
    <button type="button" id="button-cart" data-loading-text="{{ text_loading }}" class="btn button-cart">{{ button_cart }}</button>
{% endif %}
  1. В том же файле находим:
<input type="text" name="quantity" value="{{ minimum }}" size="2" id="input-quantity" class="form-control" />
  1. Заменяем его на:
{% if stock_quantity > 1 %} 
    <input type="text" name="quantity" value="{{ minimum }}" size="2" id="input-quantity" class="form-control" />
{% endif %}
  1. В том же файле находим:
<label class="control-label" for="input-quantity">{{ entry_qty }}</label>
  1. Заменяем его на:
{% if stock_quantity > 1 %} 
    <label class="control-label" for="input-quantity">{{ entry_qty }}</label>
{% endif %}
  1. Сохраняем, обновляем кэш.
  1. Готово. На странице товара, когда его не будет в наличии, кнопка «Купить» станет неактивной.

Возникает вопрос. Вот мы отключили кнопку на странице товара. Славно. Но как быть, если кнопка есть ещё и в категориях, поиске, страницах производителей?

Всё зависит от конкретной темы. Но шаги остаются теми же, — меняются только редактируемые файлы. Например, category.php, manufacturer.php, search.php и пр.

Поделиться
Отправить
 2599   2020   OpenCart 3   работа