kardinals Posted April 20, 2023 at 12:43 PM Share Posted April 20, 2023 at 12:43 PM Кто-то адаптировал модуль мультивалютные товары с 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 Quote Link to comment Share on other sites More sharing options...
Solution kardinals Posted April 23, 2023 at 10:04 AM Author Solution Share Posted April 23, 2023 at 10:04 AM кому надо решение для окфильтра 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.