Привет, форумчане!
OCStore 3, как в категориях перенести в конец списка, товары, у которых цена = 0? Наверняка, кто-то делал такое.
[Решено] Товары с ценой "0" в конец списка
[Решено] Товары с ценой "0" в конец списка
Последний раз редактировалось brooks 05 мар 2023, 12:00, всего редактировалось 1 раз.
- devimirochnik
- Разработчик дополнений
- Сообщения: 195
- Зарегистрирован: 14.04.2022
- Откуда: Россия
- Мои дополнения: devimirochnik
- Поблагодарил: 3 раз
- Спасибо: 14 раз
Re: Товары с ценой "0" в конец списка
Вот, например, модуль - https://liveopencart.ru/opencart-moduli ... sortirovka
Мои модули: Оптимизация, SEO, Скидки, Отчёты и прочее
Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
Оказываю услуги поддержки и выполнения различного рода задач для сайтов (допилы) в рамках самозанятости (фриланс). Стоимость и прочее зависит от задач. График ненормированный, но дело делаю.
Re: Товары с ценой "0" в конец списка
devimirochnik писал(а): ↑26 фев 2023, 17:31 Вот, например, модуль - https://liveopencart.ru/opencart-moduli ... sortirovka
Благодарю, видел. Слишком много всего. Нужно только то, что я написал. Есть ли еще варианты?
- Tom
- Разработчик дополнений
- Сообщения: 196
- Зарегистрирован: 10.03.2022
- Откуда: Казахстан - Алматы
- Поблагодарил: 10 раз
- Спасибо: 81 раз
Re: Товары с ценой "0" в конец списка
catalog\model\catalog\product.php
Найти :
Заменить на :
Если в магазине есть фильтр подменяющий собой логику вывода товаров или некий модификатор, для тех же целей, вероятнее всего получите 500 ошибку. Решение исключительно для дефолтного опенкарт.
Найти :
Код: Выделить всё
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
}
Заменить на :
Код: Выделить всё
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";
}
Re: Товары с ценой "0" в конец списка
Благодарю, Вас. Не смотря на ваши предостережения на свой страх и риск попробовал на ocStore 3.0.3.7 с шаблоном Frame и фильтром OCFilter. Ваше решение помогло.