İçerisinde yapılandırılabilir ürün ve kod için bağımsız fiyat dosyası oluşturabilirsiniz.
catalog_product_prices.xml
kod ekle
<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
<referenceBlock name="render.product.prices">
<arguments>
<argument name="default" xsi:type="array">
<item name="prices" xsi:type="array">
<item name="final_price" xsi:type="array">
<item name="render_class" xsi:type="string">Vendor\Module\Pricing\Render\FinalPriceBox</item>
<item name="render_template" xsi:type="string">Vendor_Module::product/price/final_price.phtml</item>
</item>
</item>
</argument>
<argument name="configurable" xsi:type="array">
<item name="prices" xsi:type="array">
<item name="final_price" xsi:type="array">
<item name="render_class" xsi:type="string">Magento\ConfigurableProduct\Pricing\Render\FinalPriceBox</item>
<item name="render_template" xsi:type="string">Vendor_Module::product/price/final_price_configurable.phtml</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</layout>
yapılandırılabilir bir ürün olduğundan getFinalPrice()
ve tarafından kontrol edilmesi mümkün değildir getSpecialPrice()
.
yapılandırılabilir ürün için aşağıdaki kodu ekleyin.
$priceModel = $block->getPriceType('regular_price');
$finalPriceModel = $block->getPriceType('final_price');
<?php if($finalPriceModel->getAmount() < $priceModel->getAmount()) : ?>
<span class="old-price sly-old-price no-display config-old" style="text-decoration: line-through;">
<?= $block->renderAmount($priceModel->getAmount(), [
'price_id' => $block->getPriceId('old-price-' . $idSuffix),
'price_type' => 'oldPrice',
'include_container' => true,
'skip_adjustments' => true
]); ?>
</span>
<?php
$array = (array)$priceModel->getAmount();
$prefix = chr(0).'*'.chr(0);
$price = $array[$prefix.'amount'];
$array = (array)$finalPriceModel->getAmount();
$prefix = chr(0).'*'.chr(0);
$finalPrice = $array[$prefix.'amount'];
$percentage = 100 - round(($finalPrice / $price)*100);
echo "<span class='percent-amt'>- ".$percentage."%</span>";
?>
<?php endif; ?>
Not: bunu doğrudan değişiklik dosyası ile alabilirsiniz app\design\frontend\Vendor\theme\Magento_Catalog\templates\product\price\final_price.phtml
, sadece yapılandırılabilir ürün için koşul koymak zorundasınız
liste sayfasında yüzde gösterilecek