Перейти к содержанию
gts

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

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

Всем привет. У всех товаров количество 0 и установлен статус при отсутствии на складе (например: "В наличии", "На заказ", "Нет в наличии"). В категории сделана сортировка товаров по умолчанию. Я каждому товару присваиваю sort_id в ручном режиме. Хотелось бы чтобы sort_id выставлялся автоматически, в зависимости от статуса. Всем товарам со статусом "В наличии" - sort_order 1, "На заказ"- sort_order 2, "Нет в наличии" - sort_order 3. Подскажите, как это можно сделать?

Изменено пользователем gts

Поделиться сообщением


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

а не проще ли сортировать в таком случае  по stock_id

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, chukcha сказал:

а не проще ли сортировать в таком случае  по stock_id

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

пока такой вариант нашел в гугле, буду пробовать на тестовом сайте

catalog\model\catalog\product.php

 if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
            if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
                $sql .= " ORDER BY p.stock_status_id DESC, LCASE(" . $data['sort'] . ")";
            } elseif ($data['sort'] == 'p.price') {
                $sql .= " ORDER BY p.stock_status_id DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
            } else {
                $sql .= " ORDER BY p.stock_status_id DESC, " . $data['sort'];
            }
        } else {
            $sql .= " ORDER BY  p.stock_status_id DESC, p.sort_order";

Изменено пользователем gts

Поделиться сообщением


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

основная проблема, в том что stock_status_id  не есть упорядоченное множество

Вам или нужно самостоятельно упорядочить по id в локализации и тогда можно спокойно ORDER BY p.stock_status_id DESC

, или упорядочить при сортировке ORDER BY field(p.stock_status_id, 7,5,8,1) DESC

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 30.10.2018 в 15:56, chukcha сказал:

основная проблема, в том что stock_status_id  не есть упорядоченное множество

Вам или нужно самостоятельно упорядочить по id в локализации и тогда можно спокойно ORDER BY p.stock_status_id DESC

, или упорядочить при сортировке ORDER BY field(p.stock_status_id, 7,5,8,1) DESC

подскажите, нужно ли что-то менять в контроллере? у меня там выставлена по умолчанию сортировка по возрастанию цены

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, gts сказал:

нужно ли что-то менять в контроллере?

а какже

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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