Проверил на Opencart 3, работает но пришлось сделать небольшие доработки
После вот этого в controller/common/cart.php
// Display prices
if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
$unit_price = $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'));
$price = $this->currency->format($unit_price, $this->session->data['currency']);
$total = $this->currency->format($unit_price * $product['quantity'], $this->session->data['currency']);
} else {
$price = false;
$total = false;
}
Вставил вот это:
if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
$unit_priceOld = $this->tax->calculate($product['price_old'], $product['tax_class_id'], $this->config->get('config_tax'));
$priceOld = $this->currency->format($unit_priceOld, $this->session->data['currency']);
} else {
$priceOld = false;
}
if($price == $priceOld) {
$priceOld = false; // если цена старая и новая совпадают, то не нужно выводить обе
}
В system/library/cart/cart.php в массив $product_data[], вставил вот это:
'price_old' => $product_query->row['price'],
Потом не зубудьте обновить кеш модификатора в админке
По крайней мере у меня работает без проблем, надеюсь вам поможет это решение)