[Помогите] Отображение товаров в категориях и на странице производителя при статусе "Нет в наличии"

Тема в разделе "OpenCart", создана пользователем nick885, 9 фев 2014.

  1. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Друзья, такой вопрос, как можно убрать отображение товаров в категориях и на странице производителя при статусе "Нет в наличии" и количестве "0"? При этом товар должен быть доступен по прямой ссылке.

    ps. просьба не предлагать вариант привязать товар к невидимой категории. Нужно именно сохранить структуру (товар очень много и чтоб потом не искать куда их привязать).

    upd. Скорее всего это делается так:
    Код:
        <file name="catalog/model/catalog/product.php">
            <operation>
                <search position="replace"><![CDATA[
                    p.status = '1'
                ]]></search>
                <add><![CDATA[
                    p.status = '1' AND p.quantity > 0
                ]]></add>
            </operation>
        </file>
    Но как вместо p.quantity > 0 затулить Статусы наличия? Это называется как-то типа p.availability? Как их перечислить? Типа при определенных статусах показывать, а при статусе "Нет в наличии" - нет.
     
    Последнее редактирование: 9 фев 2014
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    открываем файл catalog/model/catalog/product.php
    перед
    PHP:
    $sql .= " GROUP BY p.product_id";
    вставляем
    PHP:
    $sql .= " AND p.quantity >= 1 AND p.stock_status_id <> '" $this->config->get('config_stock_status_id') . "' ";
     
    nick885 нравится это.
  3. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Спасибо, заработало, но есть глюк. Сохраняются страницы навигации
    [​IMG]

    Но товаров там нет.
    Как убрать номера страниц, у которых нет товаров?

    И еще - выводятся все доступные разделы главной категории, даже если перейти в последнюю категорию
     
  4. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    ах да точно, забыл про копипаст кода опенкарта)
    еще в том же файлике в функцию getTotalProducts
    примерно перед такой строчкой
    PHP:
    $query $this->db->query($sql);
    вставляем еще раз
    PHP:
    $sql .= " AND p.quantity >= 1 AND p.stock_status_id <> '" $this->config->get('config_stock_status_id') . "' ";
    проверяем....
     
    nick885 нравится это.
  5. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Пробрема с пангинациец решилась, товары которых нет в наличии тоже. Но мне нужно чтоб товары, которые с количеством 0 и с следующими статусами отображались:
    [​IMG]

    То есть "Вариант состояния склада в товаре" - "Нет в наличии" - товар отключаем, если один с выше перечисленных или не установлен вообще - оставляем.
    Нужно убрать только если товар с количеством 0 и вариантом состояния склада Нет в наличии.
     
  6. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    как работает:
    отбираются товары к-во которого больше 0(если 0 или меньше то не выбираются)
    и
    если статус товара не равен статусу установленом в настройках магазина во вкладке ОПЦИИ пункте Статус "Нет на складе"

    если нужно чтоб выводился с 0 ковом то просто меняем
    PHP:
     $sql .= " AND p.quantity >= 1 AND p.stock_status_id <> '" $this->config->get('config_stock_status_id') . "' "
    на
    PHP:
     $sql .= " AND p.quantity >= 0 AND p.stock_status_id <> '" $this->config->get('config_stock_status_id') . "' "
    что с вариантами непонятно - незнаю
    можно еще произвольно вручную задать выборку со статусом заказа
    вместо
    PHP:
    " . $this->config->get('config_stock_status_id') . "
    вставить ID статуса котрый ненадо показывать
    ИД можно посмотреть в админке при наведении на редактирования статуса заказа
     
    nick885 нравится это.
  7. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Блин, я уже обрадовался, что все работает. Но если у товара количество больше 1 и статус при отсутствии на складе - нет в наличии, то товар тоже не выводится.

     
  8. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Ну дак логично сделать условия что если товара нет в нужном к-ве и статус нет в наличии то не выводить, что я и сделал
    Ваш вариант ето либо то либо то, тоесть получится если товар в к-ве -5 а статус в наличии то он будет отображаться, или наоборот, что не очень логично
    Но все же, ето легко исправить заменив условия AND на OR
    тоесть вместо
    PHP:
    $sql .= " AND p.quantity >= 0 AND p.stock_status_id <> '" $this->config->get('config_stock_status_id')
    ето
    PHP:
    $sql .= " AND p.quantity >= 0 OR p.stock_status_id <> '" $this->config->get('config_stock_status_id')
     
    nick885 нравится это.
  9. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    OR точно не подходит
    Получается если у товара количество 900 и статус при отсутствии на складе "нет в наличии", то он не выводится. Это же не правильно, согласитесь.

    AND неправильно работает.

    Если AND p.quantity >= 0 AND p.stock_status_id товары, у которых количество 1000 тоже не выводятся:
    Я не понимаю почему они не выводятся. Может у вас есть варианты?
     
  10. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    PHP:
    $sql .= " AND (p.quantity >= 1 OR p.stock_status_id <> '" $this->config->get('config_stock_status_id') . "') ";
    Если я правильно понял что надо
     
    nick885 нравится это.
  11. nick885

    nick885

    Регистрация:
    14 мар 2013
    Сообщения:
    101
    Симпатии:
    40
    Решение где-то рядом)
    Теперь не выводятся товары некоторых производителей. Может надо в пангинации изменить логику? Я не понимаю почему в чем отличие такого товара:
    [​IMG]
    от
    [​IMG]
    Почему один выводится, а второй - нет.

    UPD. Мой косяк. Я вместо изменения двух строк, изменял только одну.
     
    Последнее редактирование: 10 фев 2014
  12. alexpet

    alexpet

    Регистрация:
    15 янв 2014
    Сообщения:
    50
    Симпатии:
    22
    Подскажите, а как эти изменения отразятся на SEO? Я понимаю, что в каталоге товара не будет видно, а с поисковой системы ссылка будет рабочая. Но на оф. сайте человек заявляет, что страницы товаров, скрываемые этим методом, выбрасываются из индекса. Вот ссылка. Получается что при следующем заходе робота ПС он не обнаруживает данный товар в каталоге и выкидывает его, не смотря на рабочую ссылку на него из самой ПС, я правильно понимаю? Просьба спецам пролить свет.
     
  13. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    они не будут доступны поисковикам в дальнейшем... если карта сайта тоже использует ету модель то в карте тоже не будет етих товаров, что еще не понятно
     
  14. alexpet

    alexpet

    Регистрация:
    15 янв 2014
    Сообщения:
    50
    Симпатии:
    22
    А знаете ли вы способ скрыть товары с количеством 0 от глаз пользователя (чтобы не захламлять каталог), но оставить их доступными для поисковиков (чтоб не терять накопленный вес страницы)?