tarasikuss

Вывод скидки в процентах

Recommended Posts

Добрый день. Задача такая: на акционных товарах вывести скидку в процентах. Версия 2.3 . Делал вот такие изменения, но что-то не работает, при выводе пишет ошибку что переменная не найдена. 

Скрытый текст

 

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;}

Затем:


$this->data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'price' => $price,'special' => $special,'rating' => $rating,'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']));

Меняем на:


$this->data['products'][] = array('product_id' => $result['product_id'],'thumb' => $image,'name' => $result['name'],'price' => $price,'special' => $special,'skidka' => $skidka,'rating' => $rating,'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']));

Для Opencart 2 код будет примерно такой же, поэтому переписывать не буду, найти не сложно. Еще один момент - в некоторых модулях вместо "$result" может использоваться "$product_info", соответственно тогда вычислять нужно так:


$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>

Добавляем:


<div class="procent"><?php echo $product['skidka']; ?> % <span>Скидка</span></div>

3. Немного изменений в css:

.procent { position: absolute; top: 5px; left: 5px; background: rgba(255, 0, 0, 0.57); border-radius: 50px; width: 100px; height: 75px; padding-top: 25px; text-align: center; font-size: 30px; color: #fff; text-shadow: 0px 0px 5px #520202; }
.procent span {display: block; font-size: 15px;}
.box-product > div:hover .procent {box-shadow: 0px 0px 5px #FDDF00;}

Учитывая, что для ".procent" было задано абсолютное позиционирование, добавим для блока с товаром "position:relative"

.box-product > div{ position: relative;}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу