COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


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

 

 

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

  • 1 year later...

Спасибо, но тут:

$skidka = round(100-($result['special']/($result['price']/100)))


Забыли добавить ; чтобы получилось так:
 

$skidka = round(100-($result['special']/($result['price']/100)));


А то сайт падал с ошибкой.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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