sergei5770 Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 День добрый! Подскажите, как можно изменить функцию сортировки, чтобы он товары с нулевой стоимостью всегда помещал вниз списка? Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сортируйте по цене Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 1 час назад, sergei5770 сказал: День добрый! Подскажите, как можно изменить функцию сортировки, чтобы он товары с нулевой стоимостью всегда помещал вниз списка? p.price=0 перед остальной сортировкой Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, spectre сказал: p.price=0 перед остальной сортировкой Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, Leingard сказал: Сортируйте по цене просто по цене отсортировать не совсем то что нужно, потому что сортировка по возрастанию цены тоже нужна, но при этом нужно чтобы товары с нулевой стоимостью уходили в конец списка всегда Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сортируйте по цене Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 1 час назад, sergei5770 сказал: День добрый! Подскажите, как можно изменить функцию сортировки, чтобы он товары с нулевой стоимостью всегда помещал вниз списка? p.price=0 перед остальной сортировкой Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, spectre сказал: p.price=0 перед остальной сортировкой Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, Leingard сказал: Сортируйте по цене просто по цене отсортировать не совсем то что нужно, потому что сортировка по возрастанию цены тоже нужна, но при этом нужно чтобы товары с нулевой стоимостью уходили в конец списка всегда Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 1 час назад, sergei5770 сказал: День добрый! Подскажите, как можно изменить функцию сортировки, чтобы он товары с нулевой стоимостью всегда помещал вниз списка? p.price=0 перед остальной сортировкой Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, spectre сказал: p.price=0 перед остальной сортировкой Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, Leingard сказал: Сортируйте по цене просто по цене отсортировать не совсем то что нужно, потому что сортировка по возрастанию цены тоже нужна, но при этом нужно чтобы товары с нулевой стоимостью уходили в конец списка всегда Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, spectre сказал: p.price=0 перед остальной сортировкой Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, Leingard сказал: Сортируйте по цене просто по цене отсортировать не совсем то что нужно, потому что сортировка по возрастанию цены тоже нужна, но при этом нужно чтобы товары с нулевой стоимостью уходили в конец списка всегда Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sergei5770 Опубліковано: 22 січня 2018 Автор Share Опубліковано: 22 січня 2018 Только что, Leingard сказал: Сортируйте по цене просто по цене отсортировать не совсем то что нужно, потому что сортировка по возрастанию цены тоже нужна, но при этом нужно чтобы товары с нулевой стоимостью уходили в конец списка всегда Надіслати Поділитися на інших сайтах More sharing options... Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Leingard Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). Надіслати Поділитися на інших сайтах More sharing options... spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
spectre Опубліковано: 22 січня 2018 Share Опубліковано: 22 січня 2018 25 минут назад, sergei5770 сказал: Пробовал следующим образом: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY price = 0, price DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY price = 0, price DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY price = 0, price DESC," . $data['sort']; } } else { $sql .= " ORDER BY price = 0, price DESC, p.sort_order"; } Не сработало price = 0, price DESC, конечно не сработало Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення UpStore – адаптивний універсальний шаблон + Швидкий Старт Автор: 29aleksey SP WAREZ CHECKER - перевірка на піратські та шкідливі модулі (with warez.rip) Автор: spectre Деталі замовлення на сторінці подяки Автор: kJlukOo Вивантаження замовлень у XML Автор: DobriyEvgeniy Octostore - адаптивний, універтальний та продуманий шаблон для Opencart/OcStore Автор: MonstroDesign
sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, spectre сказал: price = 0, price DESC, конечно не сработало не подскажете как реализовать ваш метод, и тот ли я кусок кода редактирую? Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Товары с нулевой стоимостью вниз списка
sergei5770 Опубліковано: 23 січня 2018 Автор Share Опубліковано: 23 січня 2018 16 часов назад, Leingard сказал: Сделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, где p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно будет подумать на счет пагинации. Или 2-ой вариант. Ничего в модельке не переделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары где price == 0 (до переменной $price) и помещаем и их в конец (array_push). спасибо, попробую Надіслати Поділитися на інших сайтах More sharing options... sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
sergei5770 Опубліковано: 25 січня 2018 Автор Share Опубліковано: 25 січня 2018 Может кто подскажет, попробовал сделать следующей конструкцией: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (p.price>0) 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.price>0) DESC," . $data['sort']; } } else { $sql .= " ORDER BY (p.price>0) DESC, p.sort_order"; } Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто. У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос такой, что нибудь сталкивался с Brainy Filter, может кто-то знает где в нем какие условия для сортировки прописываются? Надіслати Поділитися на інших сайтах More sharing options... 2 years later... linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
linewery Опубліковано: 16 вересня 2020 Share Опубліковано: 16 вересня 2020 В 25.01.2018 в 16:59, sergei5770 сказал: У меня параллельно стоит Brainy Filter Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter. Редактировал catalog/model/catalog/product.php Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены. Сделал в методе getProducts() следующее: if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort']; } } else { $sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order"; } работает только в том случае, если отключен Brainy Filter. Получается, что BF модифицирует getProducts() Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра? Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts