Как отобразить процент скидки на товар на странице сведений о товаре в Magento 2.2.1


Мне интересно, как добавить процентную скидку на странице сведений о продукте? Я нашел похожую тему, но, по-видимому, она не работает с 2.2.1

Как отобразить процент скидки на товар на странице сведений о товаре в Magento 2.1.8?enter image description here

Upd:enter image description here

enter image description here

enter image description here

Author: Evince Development, 2018-03-24

4 answers

Чтобы показать скидку % на странице сведений о продукте, добавьте ниже код, где вы хотите. Это покажет скидку%, применяемую либо с Правилом цены каталога , либо с добавленной специальной ценой.

Например, чтобы показать % рядом со статусом запаса, добавьте код в шаблон ниже : Тема/Каталог magento_catalog/шаблоны/продукт/вид/тип/по умолчанию.phtml.

<?php
$simplePrice = 0;
$_savingPercent = 0;
if($_product->getTypeId() == "simple") {
   $simplePrice = $_product->getPrice();
} else {
   $_children = $_product->getTypeInstance()->getUsedProducts($_product);
    foreach ($_children as $child){
    $simplePrice = $child->getPrice();
    break;
   }
}

$_finalPrice =$_product->getFinalPrice();
$_price = $simplePrice;
if($_finalPrice < $_price) {
   $_savingPercent = 100 - round(($_finalPrice / $_price)*100);
   echo 'Your save '.$_savingPercent . '%';

}
?>

ПРИМЕЧАНИЕ: предполагая, что все простые продукты конфигурируемого имеют одинаковую цену, однако условие выберет только первую цену простого продукта настраиваемого продукта и рассчитать скидку. Но этот логический/кодовый блок может быть изменен в зависимости от требований.

 7
Author: Naveed Asim, 2019-10-08 11:18:04

Для отображения процента скидки на странице просмотра продукта. Либо вы можете переопределить один из приведенных ниже phtml.

Поставщик/magento/модуль-каталог/просмотр/интерфейс/шаблоны/продукт/просмотр/тип/по умолчанию.phtml, поставщик/magento/модуль-каталог/просмотр/база/шаблоны/продукт/цена/окончательная цена.phtml

  $blockObj = $block->getLayout()->createBlock('Magento\Catalog\Block\Product\Price');
 $_product = $blockObj->getProduct();
    $specialprice = $_product->getSpecialPrice();
       $price = $_product->getPrice();
    if ($price) {
       echo $sale = round(abs((($price-$specialprice)/$price)*100));
    }

Надеюсь, это поможет!! Счастливое кодирование

 2
Author: Vijay R, 2020-08-30 08:43:55

Для отображения цены со скидкой на товар используйте приведенный ниже код.

$blockObj = $block->getLayout()->createBlock('Magento\Catalog\Block\Product\Price');

$_product = $blockObj->getProduct();
$specialprice = $_product->getSpecialPrice();
$specialPriceFromDate = $_product->getSpecialFromDate();
$specialPriceToDate = $_product->getSpecialToDate();
$today = time();
$price = $_product->getPrice();

if ($price) {
   echo $sale = round((($price-$specialprice)/$price)*100);
}
 1
Author: Anees, 2019-03-05 10:40:36

Вот лучший способ получить сумму скидки

    public function getProductDiscount(ProductInterface $product)
    {
        $regularPrice = $product->getPriceInfo()->getPrice(\Magento\Catalog\Pricing\Price\RegularPrice::PRICE_CODE)->getAmount()->getValue();
        $finalPrice = $product->getPriceInfo()->getPrice(\Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE)->getAmount()->getValue();

        if ($finalPrice < $regularPrice) {
            return round(100 - $finalPrice / $regularPrice * 100) . '%';
        }
    }
 0
Author: amcastror, 2019-10-02 20:34:41