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

Опубликовал marketims 13.07.2020 0 Комментарий(ев) Лайфхаки для 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)

 

Ищем:

 

<span class="price-old"><?php echo $product['price']; ?></span>
<span class="price-new"><?php echo $product['special']; ?></span>


Добавляем:

 

<span class="procent"><?php echo $product['skidka']; ?>%</span>

 

Как добавить скидку в процентах для карточки товара?

 

Шаг №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)

 

Находим:

 

<span class="price-old"><?php echo $product['price']; ?></span>
<span class="price-new"><?php echo $product['special']; ?></span>


И добавляем ниже или выше:

 

<span class="procent"><?php echo $product['skidka']; ?>%</span>


После чего Вы можете смело настраивать остальные модули и страницы, которые выводят товар.


Стилизация вывода процентов на CSS - ваше домашнее задание. Шутка, мы считаем, если вы способы залезть в PHP + HTML код даже на таком начальном уровне, то стилизовать скидку в % не составит никакого труда :)

Оставить комментарий