Magento 2 zeigt normalen Preis mit Sonderpreis für Minicart

9

Ich kann den Normalpreis zusammen mit dem Sonderpreis festlegen, während ich die benutzerdefinierte Funktion in die Kerndatei einfüge

vendor/magento/module-weee/Block/Item/Price/Renderer.php

public function getUnitItemPriceExclTax()
{
    $priceExclTax = $this->getItem()->getProduct()->getPrice();

    return $priceExclTax;
}

Und diese Funktion in die Kerndatei aufrufen, vendor/magento/module-weee/view/frontend/templates/checkout/cart/item/price/sidebar.phtml

Also beide Preise richtig bekommen, aber ich möchte das überschreiben

vendor/magento/module-weee/Block/Item/Price/Renderer.php Block auf meinem benutzerdefinierten Modul.

Ich habe di.xml mit folgendem Code erstellt:

<preference for="Magento\Weee\Block\Item\Price\Renderer" type="<namespace\<module_name>\Block\Item\Price\Renderer"/>

Und setzen Sie diese getUnitItemPriceExclTax()Funktion einfach in diesen Block.

Geben Sie hier die Bildbeschreibung ein

Ronak Chauhan
quelle

Antworten:

11

Sie müssen die Datei Renderer.php im Core nicht überschreiben und sollten dies niemals im Core tun. Sie können einfach Änderungen in der Datei sidebar.phtml vornehmen und Ihre Änderungen festlegen.

Sie können den Preis von der folgenden Methode erhalten:

$finalPrice = $item->getProduct()->getFinalPrice();
$normalPrice = $item->getProduct()->getPrice();

Nachdem Sie die obigen Änderungen vorgenommen haben, können Sie dies unter dem Code in Ihrer Vorlagendatei tun:

<?php if ($block->displayPriceWithWeeeDetails()): ?>
        <span class="minicart-tax-total">
    <?php else: ?>
        <span class="minicart-price">
    <?php endif; ?>
        <?php /* @escapeNotVerified */ echo $block->formatPrice($block->getUnitDisplayPriceExclTax()); ?> 
        </span>

    <?php if($normalPrice != $finalPrice){ ?>
    <span class="minicart-old-price">
            <?php /* @escapeNotVerified */ echo $block->formatPrice($normalPrice); ?>
    </span>
    <?php }   ?>

Ich habe Änderungen in Magento Version 2.1.1 vorgenommen.

Rakesh Jesadiya
quelle
2
in Magento2.1.8 Es wird nicht mehr in sidebar.phtml gerendert. Ich sehe von Vendor / Magento / Modul-Checkout / Ansicht / Frontend / Layout / Checkout_Cart_sidebar_item_price_renderers.xml, Die Vorlage ist Vendor / Magento / Modul-Checkout / Ansicht / Frontend / Web / Vorlage / Minicart / Artikel / Preis.html Ich weiß nicht, wie ich den Ursprungspreis bekommen soll.
user1506075