На сайте этоны товаров хранятся в Рублях и Евро.
На фронте Евро переслитывается по курсу ЦБ РФ.
В иблиэто 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'], //Значение курса