OpenCart: как отключить кнопку покупки, когда товара нет в наличии
Когда товара нет в наличии, его, по умолчанию, можно добавить в корзину. В таком сценарии нет необходимости.
Что делать
- Открываем сайт/catalog/controller/product/product.php
- Находим код (~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');
}
- Перед ним добавляем:
$data['stock_quantity'] = $product_info['quantity'];
$data['text_out_of_stock'] = $product_info['stock_status'];
- В том же файле находим (~436 строка):
$data['products'][] = array(
…
);
- После скобки добавляем:
'quantity' => $result['quantity'],
'text_out_of_stock' => $result['stock_status'],
- Сохраняем, обновляем кэш.
- Открываем сайт/catalog/theme/тема/template/product/product.twig
- Находим код:
<button type="button" id="button-cart" data-loading-text="{{ text_loading }}" class="btn button-cart">{{ button_cart }}</button>
- В завимости от темы, код может отличаться, но button-cart остаётся константой.
- Заменяем его на:
{% 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 %}
- В том же файле находим:
<input type="text" name="quantity" value="{{ minimum }}" size="2" id="input-quantity" class="form-control" />
- Заменяем его на:
{% if stock_quantity > 1 %}
<input type="text" name="quantity" value="{{ minimum }}" size="2" id="input-quantity" class="form-control" />
{% endif %}
- В том же файле находим:
<label class="control-label" for="input-quantity">{{ entry_qty }}</label>
- Заменяем его на:
{% if stock_quantity > 1 %}
<label class="control-label" for="input-quantity">{{ entry_qty }}</label>
{% endif %}
- Сохраняем, обновляем кэш.
- Готово. На странице товара, когда его не будет в наличии, кнопка «Купить» станет неактивной.
Возникает вопрос. Вот мы отключили кнопку на странице товара. Славно. Но как быть, если кнопка есть ещё и в категориях, поиске, страницах производителей?
Всё зависит от конкретной темы. Но шаги остаются теми же, — меняются только редактируемые файлы. Например, category.php, manufacturer.php, search.php и пр.