Как вывести скидку в процентах в шаблоне Opencart?

В этой статье вы узнаете как вывести скидку в процентах в шаблоне CMS Opencart.
В интернете почему-то крайне мало рабочих решений этой проблемы. В основном все модули и статьи написаны для административной части, что бы именно там менять цены в процентном соотношении.
Но мы с вами будем делать скидки и акции в % конкретно для клиентов, ведь для продаж лучше влияент именно процентная скидка, чем "старая цена" в цифрах.
Как добавить скидку в процентах для категорий и модулей?
Для первого раза можно взять любой файл модуля, категории, либо страницы товаров со скидкой.
В этой статье будем использовать файлы:
- "/catalog/controller/module/special.php"
- "/catalog/view/theme/default/template/module/special.tpl"
Шаг №1. Вносим коррективы в контроллер - (/catalog/controller/module/special.php)
Находим:
if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; }
И заменяем на:
if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); $skidka = round(100-($result['special']/($result['price']/100))); } else { $skidka = false; $special = false; }
После находим:
$data['products'][] = array(
Под строкой:
'special' => $special,
Вставляем:
'skidka' => $skidka,
Внимание! Некоторые модули место $result используют $product_info, в таком случае меняем строку:
$skidka = round(100-($result['special']/($result['price']/100)));
на
$skidka = 100-($product_info['special']/($product_info['price']/100));
Шаг №2. Вносим правки в шаблон (/catalog/view/theme/default/template/module/special.tpl)
Ищем:
Добавляем:
%
Как добавить скидку в процентах для карточки товара?
Шаг №1. Меняем код в контроллере - (/catalog/controller/product/product.php)
Находим:
if ((float)$product_info['special']) { $this->data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $this->data['special'] = false; }
И заменяем на:
if ((float)$product_info['special']) { $this->data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); $this->data['skidka'] = round(100-($product_info['special']/($product_info['price']/100))); } else { $this->data['special'] = false; $this->data['skidka'] = false; }
Внимание! Для Opencart 2.x меняем строку:
$this->data['skidka'] = round(100-($product_info['special']/($product_info['price']/100)));
на:
$data['skidka'] = 100-($product_info['special']/($product_info['price']/100));
Шаг №2. Редактируем шаблон карточки товара (/catalog/view/theme/default/template/product/product.tpl)
Находим:
И добавляем ниже или выше:
%
После чего Вы можете смело настраивать остальные модули и страницы, которые выводят товар.
Стилизация вывода процентов на CSS - ваше домашнее задание. Шутка, мы считаем, если вы способы залезть в PHP + HTML код даже на таком начальном уровне, то стилизовать скидку в % не составит никакого труда :)
Вопросы и пожелания можете оставлять в комментариях!