Доброго времени суток! Подскажите пожалуйста как сделать сортировку товаров в категории по цене в гривне. Дело в том что сейчас сортирует по цене указанной в админке (например там не всегда указывалась цена в гривне, так же на некоторые товары цена стоит в евро или долларах) вот и получается что товары в евро самые дешевые так как сортирует по абсолютному значению например 350 евро выводит в конце списка самых дешевых товаров (хотя пользователь видит стоимость в гривне - 9 с копейками тысяч гривен) вот и получается что товар за 9 253 гривны дешевле товара за 5 000 гривен: //вот код в category.php $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url) ); что бы пользователь видел цену в гривнах на товары а не в той валюте в которой указано в админке, я просто умножал цену на коэфициент курса в том же category.php: $result['price'] *= $result['price_coefficient']; я так понимаю для сортировки в гривне нужно сделать что-то подобное? Заранее благодарен за помощь!
Что-то у меня каша какая-то в голове, это как вообще? Ну есть в опенкарте валюта по-умолчанию, допустим сначала это было евро(завели 10 товаров), потом стала гривна(завели еще 20), так цены из евро автоматом должны перевестись в гривны. Разве нет? Ну т.е. и то самое абсолтное значение сконвертироваться должно же, разве нет?поле для цены одно ведь и там валюта по-умолчанию.
Извините, я не совсем корректно сформулировал вопрос, я имел ввиду что price берет у меня с базы в том виде в котором его указали в админке - то есть если стоит цифра 250 (евро) то сортирует именно учитывая ее. А пользователь видит цену уже в гривне, для етого я в контроллере умножил значение цены на коэффициент текущей валюты: $result['price'] *= $result['price_coefficient']; вот и получается что 7 500 гр (250 евро) получаются дешевле по этой сортировке чем 2 000 гривен (так как 2000 нривен было указано в админке именно в гривне - вот оно и сравнивает 250 и 2000).... как бы решить проблему, не правя запрос?
я что-то все-равно не могу понять, в базе поле price одно, так же как и поле "цена" в админке одно. В базе значение цены хранится без указания валюты. И так в базе один товар 250 (евро), а другой 2000 (гривен), но указания валюты нет и поле одно, тогда выходит что $result['price'] *= $result['price_coefficient']; должно умножать на коэффициент и 250 и 2000. По какому принципу сейчас определяется что умножать (евро), а что нет (гривны)?
Абсолютно верно, поле в бд одно. Но так же есть табличка "oc_currency" в которой указаны коефициенты для валют, по-этому умножает на коефициент валюты все: и гривны (просто для нее это 1, то есть 2000 умножает на 1) и евро (для него свой коефициент 28, умножает 250 {евро} на 28) и доллары (коефициент 25, умножает на 25). Я решил задачу отображения цены в гривне не зависимо от того в чем указана цена в админке на уровне контроллера: $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } //recalculate price by cource $result['price'] *= $result['price_coefficient']; то есть метод getProducts($filter_data) кроме всего прочего возвращает мне и "price_coefficient" (коэфициент для каждой валюты) на который я и умножил значение "price" _____________________________________________ а вот теперь как бы провернуть такой же фокус с сортировкой? так как сравнивает именно значение колонки "price" в которой как Вы правильно подметили абсолютное значение... и 250 {евро} выходить "дешевле" 2000 гривен Может в фильтрах что-то подправить? П.С. Спасибо, Вам, что пытаетесь помочь! --- Добавлено, 23 авг 2016 ---