ฉันทำงานกับโมดูลส่วนลดผลิตภัณฑ์ ฉันทำมันผ่านปลั๊กอินและผู้สังเกตการณ์ มันทำงานได้ดีในหน้าผลิตภัณฑ์และหน้ารายการ แต่ตัวกรองราคาไม่ทำงานตามราคาผลิตภัณฑ์ที่อัพเดท
นี่คือรหัสของฉันที่ฉันใช้เพื่อกำหนดราคา
VendorName / ModuleName / etc / di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Pricing\Price\FinalPrice">
        <plugin name="custom_discount_catalog_pricing_price_finalprice" type="VendorName\ModuleName\Plugin\FinalPrice" />
    </type>
</config>
VendorName / ModuleName / etc / events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <event name='catalog_product_get_final_price'>
        <observer name='customdiscount_finalprice' instance='VendorName\ModuleName\Observer\ProcessFinalPrice'/>
    </event>
</config>
VendorName / ModuleName / สังเกตการณ์ / ProcessFinalPrice.php
<?php
namespace VendorName\ModuleName\Observer;
use Magento\Framework\Event\ObserverInterface;
class ProcessFinalPrice implements ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();
        $old = $product->getData('final_price');
        $discountedPrice = $old - ($old * 0.20);
        $product->setData('final_price',$discountedPrice);
    }
}
VendorName / ModuleName / ปลั๊กอิน / FinalPrice.php
<?php
namespace VendorName\ModuleName\Plugin;
class FinalPrice
{
    public function afterGetValue(\Magento\Catalog\Pricing\Price\FinalPrice $subject, $result)
    {
        $discountedPrice = $result - ($result * 0.20);
        return $discountedPrice;
    }
}
หมายเหตุ: ราคาที่ลดเป็นระดับลูกค้า

