OpenCart: как скрыть товары, которых нет в наличии
Чтобы были доступны и по ссылке, и в поисковиках.
В чём проблема
Представим, что у нас много тысяч товаров на сайте. Многих уже нет в наличии. Но они по-прежнему отображаются и в поиске сайта, и в категориях, и на страницах производителей. А мы знаем, что их больше не будет и они просто так «висят».
Что делать
- Открыть сайт/catalog/model/catalog/product.php
- Открыть поиск и найти все условия:
AND p.status = '1'
- Это условие отвечает за показ товара, когда он включён.
- Заменить все найденные условия (кроме одного ↓) на:
AND p.status = '1' AND p.stock_status_id != '5'
- Это условие, при котором товар не будет отображаться: включён и нет в наличии.
- Не заменять условие в самом начале файла:
public function getProduct($product_id) {
…
}
- Сохранить, обновить кэш.
- Готово. Товары, которых нет в наличии, не отображаются, но доступны по прямой ссылке и отображаются в поисковиках.
Другой вариант
Допустим, что товара нет в наличии временно. И нам нужно, чтобы его видели на сайте. Тогда можно всё немного переиграть.
Что делать
- В том же файле открыть поиск и найти те же условия.
- Заменить их (также, кроме одного) на:
AND p.status = '1' AND p.minimum != '0'
- Сохранить, обновить кэш.
- Готово. Товары, которых нет в наличии, будут отображаться как обычно. Но товары, у которых минимальное количество будет равно нулю, отображаться не будут. Для них можно создать и отдельный статус, например «Снят с производства».