Как отобразить процент скидки на товар на странице сведений о товаре в Magento 2.2.1
Мне интересно, как добавить процентную скидку на странице сведений о продукте? Я нашел похожую тему, но, по-видимому, она не работает с 2.2.1
Как отобразить процент скидки на товар на странице сведений о товаре в Magento 2.1.8?
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 . '%';
}
?>
ПРИМЕЧАНИЕ: предполагая, что все простые продукты конфигурируемого имеют одинаковую цену, однако условие выберет только первую цену простого продукта настраиваемого продукта и рассчитать скидку. Но этот логический/кодовый блок может быть изменен в зависимости от требований.
Для отображения процента скидки на странице просмотра продукта. Либо вы можете переопределить один из приведенных ниже 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));
}
Надеюсь, это поможет!! Счастливое кодирование
Для отображения цены со скидкой на товар используйте приведенный ниже код.
$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);
}
Вот лучший способ получить сумму скидки
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) . '%';
}
}