Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Скрыть товары которых нет в наличии


Гость
 Поделиться

Рекомендованные сообщения

Дорогие друзья! Каким образом можно сделать так, чтобы товары, наличие которых на складе=0 автоматически скрывались из каталога и поиска? При этом нужно чтобы доступ к ним по прямой ссылке продолжал работать.
Заранее спасибо за помощь!

Ссылка на комментарий
Поделиться на других сайтах

4 минуты назад, Rojzman сказал:

Дорогие друзья! Каким образом можно сделать так, чтобы товары, наличие которых на складе=0 автоматически скрывались из каталога и поиска? При этом нужно чтобы доступ к ним по прямой ссылке продолжал работать.
Заранее спасибо за помощь!

 

Поиск по форуму работает =) 

 

Ссылка на комментарий
Поделиться на других сайтах

В файле catalog/model/catalog/product.php

Примерно 78 строка, найти:

 

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

Заменить на

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

 

Ссылка на комментарий
Поделиться на других сайтах

В 02.06.2017 в 16:24, Maximbl4m сказал:

В файле catalog/model/catalog/product.php

Примерно 78 строка, найти:

 

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

Заменить на

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

 

Попробовал, ничего не изменилось

Ссылка на комментарий
Поделиться на других сайтах

 

Ссылка на комментарий
Поделиться на других сайтах


  • 7 месяцев спустя...
В 02.06.2017 в 19:24, Maximbl4m сказал:

В файле catalog/model/catalog/product.php

Примерно 78 строка, найти:

 

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

Заменить на

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

 

 

ВОТ ОНО! Сработало и в категориях, и во всех связанных модулях. Версия 2.1.0.2

Ссылка на комментарий
Поделиться на других сайтах


  • 9 месяцев спустя...
On 1/21/2018 at 1:40 PM, 4ester7 said:

 

ВОТ ОНО! Сработало и в категориях, и во всех связанных модулях. Версия 2.1.0.2

для 2.3 тоже работает!

Ссылка на комментарий
Поделиться на других сайтах


  • 3 недели спустя...
  • 1 месяц спустя...
8 годин назад, aorta сказав:

На opencart-cms.ru 2.3 тоже работает

а пагинация при этом коректно работает? на последней странице есть товары?

Ссылка на комментарий
Поделиться на других сайтах

В 09.01.2019 в 22:06, oleksa1972 сказал:

а пагинация при этом коректно работает? на последней странице есть товары?

Пагинация некорректная, на последней странице нет товара.

Ссылка на комментарий
Поделиться на других сайтах


В 09.01.2019 в 22:49, aorta сказал:

С пагинацией всё ок. На последней странице товары есть.

 

9 минут назад, balaban сказал:

Пагинация некорректная, на последней странице нет товара.

 

вот нормальный модуль

 

Ссылка на комментарий
Поделиться на других сайтах


17 минут назад, AWARO сказал:

вот нормальный модуль

Это не его цель..
Его цель - убрать товары из списков

Ссылка на комментарий
Поделиться на других сайтах

1 час назад, balaban сказал:

Пагинация некорректная, на последней странице нет товара.

Или такой. Есть сортировка по сток статусам...

Сейчас тестирую - полёт нормальный. О сортировке ничего не скажу, т к не юзал)

Ссылка на комментарий
Поделиться на других сайтах


  • 2 недели спустя...
  • 1 год спустя...
В 02.06.2017 в 17:24, Maximbl4m сказал:

В файле catalog/model/catalog/product.php

Примерно 78 строка, найти:

 

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

Заменить на

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

 

Работает, но у меня показывает категории "пагинацию" страниц в которых нет товара(

Изменено пользователем misterrewon
Ссылка на комментарий
Поделиться на других сайтах


  • 4 недели спустя...
48 минут назад, invariable сказал:

В Unishop есть такая возможность?

Шаблон здесь не при чём. В Unishop есть надстройка, которая позволяет товары с нулевым количеством выводит в конце списка.

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

Эта тема первая в гугле как скрыть товары которых нет в наличии, поэтому допишу на счет пагинации, возможно кому то будет полезно.
Кроме рекомендации выше нужно еще добавить условие в getTotalProducts в catalog/model/catalog/product.php
После:

WHERE p.status = '1'

добавляем условие на проверку количества:

AND p.quantity > 0

Тогда количество в пагинации и других элементах, которые используют стандартный метод подсчета товаров, будет корректным.
Также не забываем, что в акциях свои методы и если товары с нулевым остатком нужно скрыть и там, то сделайте тоже самое в getProductSpecials и getTotalProductSpecials в той же модели.

Изменено пользователем andrewborodiy
Ссылка на комментарий
Поделиться на других сайтах


Спасибо всем! Описанный выше способ помог.

Когда меняете не забывайте про кэш, там я тоже поменял

www/storage/modification/catalog/model/catalog/product.php

 

 

Изменено пользователем Dmitry56
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.