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

OpenCart: как скрыть товары, которых нет в наличии

Чтобы были доступны и по ссылке, и в поисковиках.

В чём проблема

Представим, что у нас много тысяч товаров на сайте. Многих уже нет в наличии. Но они по-прежнему отображаются и в поиске сайта, и в категориях, и на страницах производителей. А мы знаем, что их больше не будет и они просто так «висят».

Что делать

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

Другой вариант

Допустим, что товара нет в наличии временно. И нам нужно, чтобы его видели на сайте. Тогда можно всё немного переиграть.

Что делать

  1. В том же файле открыть поиск и найти те же условия.
  1. Заменить их (также, кроме одного) на:
AND p.status = '1' AND p.minimum != '0'
  1. Сохранить, обновить кэш.
  1. Готово. Товары, которых нет в наличии, будут отображаться как обычно. Но товары, у которых минимальное количество будет равно нулю, отображаться не будут. Для них можно создать и отдельный статус, например «Снят с производства».
Поделиться
Отправить
 2498   2020   OpenCart 3   работа