Как скрыть товары которых нет в наличии на 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.