Вход • Регистрация

Скрыть товар с нулевыми остатками из поиска

  • 13 сентября 2017 г.
  • Всем доброго времени суток.
    Подскажите как сделать, чтобы товар с нулевыми остатками не участвовал в поиске или автоматически имел статус "Не активен"?
    Заранее спасибо.
    • 13 сентября 2017 г. , редакция: 13 сентября 2017 г.
    • Поставить галочку "скрывать отсутствующие товары" в настройках модуля "интернет-магазин" https://yadi.sk/i/IZ78Qtc13MqxWh
      • 13 сентября 2017 г.
      • В поиске товар все равно останется. Надо чтобы не было.
        • 13 сентября 2017 г.
        • Переиндексируйте поиск
          • 13 сентября 2017 г.
          • На поиск по названию это не влияет, так как страница товара остается доступной.
            А на фильтр товара влияет.
            • 13 сентября 2017 г.
            • Ну страница товара да, она же в индексе, но даже если товара нет, важно чтобы траф не упал
              • 13 сентября 2017 г.
              • Павлу (kpv77725) как раз и нужно, чтоб в результатах поиска не было. То есть нужен легкий штрих в modules/search/search.model.php
                Код
                public function show_module()
                Именно там, чтоб не делать каждый раз переиндексацию.
  • 14 сентября 2017 г.
  • Извиняюсь, не совсем верно написал.
    Имел ввиду фильтр товаров. В нем присутствуют характеристики (например цвет:Бежевый) на товары которых нет на остатках. Соответственно результатом фильтрации становится "товар не найден". Можно ли как-то убрать из фильтра характеристики товаров с нулевыми остатками?
  • 24 сентября 2017 г. , редакция: 24 сентября 2017 г.
  • В пожеланиях написал.


    Для себя сделал решение простое: отсутствующим позициям ставим статус "Товар временно отсутствует".
    Дальше в модуле shop.model.php или filter.model.php (если покупной модуль Фильтр) находим:

    // выводим значения, только есть товары, чтобы поиск не давал пустых результатов
    ." INNER JOIN {shop_param_element} AS e ON p.param_id=e.param_id AND e.value".$this->diafan->_languages->site."=p.id"
    ." INNER JOIN {shop} AS s ON e.element_id=s.id AND s.[act]='1' AND s.trash='0'"

    меняем на:
    // выводим значения, только есть товары, чтобы поиск не давал пустых результатов
    ." INNER JOIN {shop_param_element} AS e ON p.param_id=e.param_id AND e.value".$this->diafan->_languages->site."=p.id"
    ." INNER JOIN {shop} AS s ON e.element_id=s.id AND s.[act]='1' AND s.no_buy='0' AND s.trash='0'"



    Вопрос: Как сделать так, чтобы у товаров с нулевыми остатками автоматически ставился статус "Товар временно отсутствует" ?
    • 25 сентября 2017 г. , редакция: 25 сентября 2017 г.
    • Павел, Вам нужно на CRON или на функцию обновления кол-ва товара повесить 2 запроса.
      Первый включит все товары, второй выключит те у которых нулевые остатки в т.ч. по всем харкам влияющим на цену.
      Код

      UPDATE shop SET no_buy = 0;
      UPDATE shop SET no_buy = 1 WHERE id IN (SELECT good_id, SUM(count_goods) as sum FROM shop_price GROUP BY good_id HAVING sum = 0);


      Удачи!

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум