kardinals Опубликовано 20.04.2023 в 12:43 Поделиться Опубликовано 20.04.2023 в 12:43 Кто-то адаптировал модуль мультивалютные товары с OCFilter? Сам модуль отрабатывает отлично, но окфильтр не пересчитывает 25$ в нужную валюту. года 3 назад автор писал возможное решение -Можно, в sql-запросах модуля фильтра, там где идет выборка цены p.price умножать ее на курс, примерно так:* (CASE WHEN p.currency_id>0 THEN (1/(SELECT c.value FROM `" . DB_PREFIX . "currency` c WHERE c.currency_id=p.currency_id) но не разобрался как это сделать, запрос разбит на части((( Подскажите, как подправить! 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Решение kardinals Опубликовано 23.04.2023 в 10:04 Автор Решение Поделиться Опубликовано 23.04.2023 в 10:04 кому надо решение для окфильтра 4.8 ищем в строка 388 protected function getRegularPriceRange($data, &$range) { ищем $sql .= " p.price"; и меняем на $sql .= " p.price / (SELECT value FROM " . DB_PREFIX . "currency WHERE currency_id = p.currency_id) AS price"; по аналогу добавляем / (SELECT value FROM " . DB_PREFIX . "currency WHERE currency_id = p.currency_id) AS price строка 425 $sql .= " ocf_ps.price"; выйдет так $sql .= " ocf_ps.price / (SELECT value FROM " . DB_PREFIX . "currency WHERE currency_id = p.currency_id) AS price"; и по аналогу строка 458 Далее, чтобы фильтровало по слайдеру ищем строку 1113 $or[] = "p.price BETWEEN '" . (float)$price_from . "' AND '" . (float)$price_to . "'"; меняем на $or[] = "(p.price / (SELECT value FROM " . DB_PREFIX . "currency WHERE currency_id = p.currency_id)) BETWEEN '" . (float)$price_from . "' AND '" . (float)$price_to . "'"; если необходима фильтрация по акциям скидкам ниже по аналогу делаем 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.