На сайте цены товаров хранятся в Рублях и Евро.
На фронте Евро пересчитывается по курсу ЦБ РФ.
В таблице oc_product создан еще один столбец currency_id. В котором у товаров 1 - это Руб, или 4 - это Евро.
Сам же курс берется из таблицы oc_currency в нем столбцы currency_id и value (значение курса).
Далее в контролере условие
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
if ($result['value'] == 1) { //если валюта РУБ
$cena = $result['price']; // Выводим Рубли
} else {
$cena = $result['price'] / $result['value']; //Иначе делем на курс Евро
}
$price = $this->currency->format($this->tax->calculate($cena, $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}
Проблема возникла с сортировкой "По цене"... она как понятно, берет значение price из таблицы oc_product. В итоге сортирует все вместе и Евро и Рубли. Естественно товары с Евро ценой стоят первыми, т.к. у них меньшее значение.
Как я понял проблему можно исправить в catalog/model/catalog/product.php
там в массиве есть строка
'price' => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
Прошу помощи с составлением условия, плохо понимаю в данном синтаксе написания кода.
Нужно чтото, вроде:
'price' => (if $currency_id == 1 { $query->row['price']} else { $query->row['price'] / row['value']})
В этом же массиве уже присутствует:
'currency_id ' => $query->row['currency_id'], //Код валюты
'title' => $query->row['title'], // Название валюты
'value' => $query->row['value'], //Значение курса