Как скрыть товары которых нет в наличии на opencart / osctore 2.3

Полезное

Скрыть товары, которых нет в наличии на opencart очень важный аспект для сео оптимизации. Так как НЕЛЬЗЯ УДАЛЯТЬ ТОВАРЫ, ведь тогда ссылки товара будут вести на код 404, что будет вести к потере трафика. Я прошел курсы самой известной СЕО школы в Украине и вот что они мне ответили на мой вопрос, как же сделать все-таки лучше:

Добрый день.Если товара нет временно, вы можете страницу оставить жить, но убрать на нее ссылки внутри сайта и написать нет в наличии.
Есть несколько вариантов действий над страницами товаров, что уже выбыли из наличия:
1. убрать ссылки на товар с сайта и оставить саму страничку «жить», просто люди ее не будут видеть на сайте.
2. убрать ссылки на товар с сайта и удалить его, чтобы он отдавал 404.
3. оставить ссылки на товар на сайте и удалить его, чтобы был ответ 404
4. оставить ссылки на товар на сайте и оставить «живой» страничку, просто внутри написать «нет в наличии»
5. настроить 301 редирект с карточки товара на аналогичный (очень похожий) товар
6. убрать ссылки на страницы, и в meta robots для каждого товара настраивать “noindex, follow”
Самый плохой №3. Остальные варианты могут иметь место быть. Оптимальными мы считаем 1, 5 и 6.
Если товар потенциально может появится, то не выбирайте 2 вариант.

Но я не программист и реализовать это к сожалению не могу сам. Мне очень сильно помог kikaridza123, который по сути сам все сделал, я только тестировал. Огромное ему спасибо. Вот инструкция:

Будем делать изменения в следующем файле
/catalog/model/catalog/product.php

1. Примерно строка ~ 59 находим функцию

public function getProducts($data = array())

Смотрим ниже, находим $sql .= » LEFT JOIN «

После

p.status = '1'

добавляем

AND p.quantity > 0

2. Примерно строка ~359 находим функцию

public function getProductSpecials($data = array())

Смотрим ниже в запросе $sql = «SELECT DISTINCT находим p.status = ‘1’

После

p.status = '1'

добавляем

AND p.quantity > 0

3. Примерно строка ~409 находим функцию

public function getLatestProducts($limit)

Смотрим ниже, находим p.status = ‘1’, 
После

p.status = '1'

добавляем

AND p.quantity > 0

4. Примерно строка ~425 находим функцию

public function getPopularProducts($limit)

Смотрим ниже, находим p.status = ‘1’, 
После

p.status = '1' 

добавляем

AND p.quantity > 0 

5. Примерно строка ~441 находим функцию

public function getBestSellerProducts($limit)

Смотрим ниже, находим p.status = ‘1’, 
После

p.status = '1'

добавляем

AND p.quantity > 0

6. Примерно строка ~538 находим функцию

public function getProductRelated($product_id)

Смотрим ниже, находим p.status = ‘1’, 
После

p.status = '1'

добавляем

AND p.quantity > 0

7. Примерно строка ~566 находим функцию

public function getTotalProducts($data = array())

Смотрим ниже, находим p.status = ‘1’, 
После

p.status = '1'

добавляем

AND p.quantity > 0

Таким образом, убираем показ товаров с кол-вом 0 из:

  • Категории
  • Акции
  • Последние товары
  • Хит продаж
  • Популярные товары
  • Рекомендуемые товары

——

Сами товары будут доступны по прямой ссылке.

Чтобы данные товары не пропадали из карты сайта (рассмотрим google sitemap)

Можно сделать следующее действие

1. В файле /catalog/model/catalog/product.php
До изменений которые мы проделали выше.
Находим функцию

public function getProducts($data = array()) {...}

И копируем ее ниже.
2. Меняем название на getProducts2
3. Открыеваем файл /catalog/controller/extension/feed/google_sitemap.php
Находим

$products = $this->model_catalog_product->getProducts();

И меняем на

$products = $this->model_catalog_product->getProducts2();

В итоге в карте сайта будут товары с кол-вом 0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *