[Помогите] Если товар закончился, чтобы он не отображался

Тема в разделе "OpenCart", создана пользователем Алексаша, 15 ноя 2013.

  1. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Здравствуйте уважаемые форумчане, возник такой вопрос, можно ли сделать, если товар куплен и его количество равно нулю, чтоб он не отображался в списке категорий. Заранее спасибо за любую помощью
     
  2. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    Может лучше вам не скрывать товары, которых нет в наличии, а поставить модуль для уведомления покупателей, когда товар появится или сделать сортировку "по наличию" на странице категорий?

    Для скрытия товаров с количеством = 0 нужно поправить в файле /catalog/model/catalog/product.php функцию getProducts :
    эту часть
    поменять на
     
    Алексаша нравится это.
  3. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Сработало, + в репу и литр пива как минимум
    я так понял, что изменились эти стороки
    $sql .= " AND p.quantity > 0 AND (" . implode(' OR ', $implode_data) . ")";
    } else {$sql .= " AND p.quantity > 0 AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";

    Я не силен в пхп но в двух словах, можете описать или подтвердить мои слова
    (Условие: Идет вывод товара при условии что его больше чем 0 -- AND p.quantity > 0 --)
     
  4. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    Все правильно заметили. Кинул весь кусок, чтобы проще было найти. p.quantity - это количество товара в наличии, AND p.quantity > 0 добавляет дополнительный фильтр, чтобы выводились товары, количество которых больше нуля (другими словами тех, что есть в наличии). Причем весь приведенный кусок кода выполняется только для категорий + подкатегорий и на остальные части системы не влияет.

    Забыл еще предупредить, внесите эти же изменения в функцию getTotalProducts того же файла. Иначе будут несостыковки в подсчете страниц и количества товара на странице.
     
    Алексаша нравится это.
  5. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Вот код

    Извините, что надоедаю, а куда его всунуть?
     
  6. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    По аналогии с первой функцией:

    $sql .= " AND p.quantity > 0 AND p2c.category_id IN (" . implode(', ', $implode_data) . ")";
    } else {
    $sql .= " AND p.quantity > 0 AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
     
    Алексаша нравится это.
  7. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    К сожалению проблема осталась ((
    Вот можете посмотреть, вот product.php


    Вот сайт
     
  8. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    Все правильно сделали. Там просто выполняется кеширование результатов запроса. Очистите кеш и все заработает (удалить файлы product.total.0..... из system/cache)
     
    Алексаша нравится это.
  9. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    denya, Круть, нет слов кеш почистил и счастье)) все работает корректно
    Кароч, начинаю учить PHP
     
    denya нравится это.
  10. biolion

    biolion

    Регистрация:
    27 окт 2013
    Сообщения:
    303
    Симпатии:
    94
    Раньше тоже так делал, но лучше не скрывать товары. Лезут 404 ошибки в индексе, люди переходят на 404 страницы - доверие к сайту падает. На практике лучше пусть человек переходит на товар, которого нет в наличии, а там или подписка, или скида на аналогичный товар, то есть шанс, что покупатель купит гораздо выше.
     
  11. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    В такой реализации для товара не будет 404 ошибки. Он остается включенным и если на него зайдут по прямой ссылке, то будет отображаться - т.е. для поисковиков не пропадает. Просто не будет виден из категорий.
     
  12. biolion

    biolion

    Регистрация:
    27 окт 2013
    Сообщения:
    303
    Симпатии:
    94
    А ясно. Тогда у меня примерно так же, только у меня стоит осфильтр и дописано так, что при переходе в категорию автоматически выбирается фильтр есть в наличии, и этот параметр нельзя сбросить.
     
  13. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Прикольно, а как то допиливали фильтр?
     
  14. lolita

    lolita

    Регистрация:
    28 май 2013
    Сообщения:
    4
    Симпатии:
    0
    а обязательно надо в PHP лезть, чтоб скрыть ненужные товары из категории, попроще нельзя? :unsure:
     
  15. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Проще - отключать их
     
  16. zerofirefox

    zerofirefox

    Регистрация:
    23 авг 2013
    Сообщения:
    107
    Симпатии:
    21
    Эта функция очень востребована,
    Конечно многие работают на различных условиях, поэтому правильнее было бы прикрутить к этому тогглер(переключатель) выводимый в сам магазин.
    Таким образом покупатель может сам решать нужно ему видеть товар с нулевым остатком или нет.
    Очень удобно для прокрутки функциональных опций "предзаказа" и "доставка через 2-3 дня / 2 недели" и тп.
    Может кто видел такой модуль?
     
  17. Алексаша

    Алексаша

    Регистрация:
    24 янв 2013
    Сообщения:
    120
    Симпатии:
    20
    Я где то читал, что выставляют в фильтр параметр по наличию, сразу уже прописанный, т е человек эту галочку уже не видит, я думаю можно просто выставить переключатель фильтра (в моем варианте это не подходило), а вот задавать значение из админки - это интересно. Тут палка двух концов, нет товара, нет его индексации
     
  18. zerofirefox

    zerofirefox

    Регистрация:
    23 авг 2013
    Сообщения:
    107
    Симпатии:
    21
    Это верно.
    Поэтому и говорю, что вкл/выкл во фронтенде лучший вариант.
    Кстати насчет фильтра идея интересная.
    Надо будет покопаться:cool:
     
  19. biolion

    biolion

    Регистрация:
    27 окт 2013
    Сообщения:
    303
    Симпатии:
    94
    Заказывал у фрилансера допил за 25 $. Писал тут на форуме, но никто не откликнулся, а своих знаний не хватает (
    Как он это реализовал - не знаю, но могу попросить исходник у него.

    Вот так сейчас выглядит - http://electros.com.ua/mobilnye_telefony/telefony_smartfony/telefony_i_smartfony

    Фильтр Есть в наличии просто нельзя убрать.

    Думаю гугл же видит все товары?
     
  20. zerofirefox

    zerofirefox

    Регистрация:
    23 авг 2013
    Сообщения:
    107
    Симпатии:
    21
    biolion нравится это.