为了在产品页面或小部件上显示产品价格,Magento会根据底价、特价、层价或目录规则价中的一个计算最低价格。可配置产品可以为子产品设置自己的价格,捆绑产品可以对捆绑产品应用固定价格。然后,当将产品添加到购物车时,其价格也会受到购物车价格规则的影响。
在本文中,我们将演示如何将自定义价格添加到购物车中的产品。这一行动将压倒Magento计算的价格。
购物车中产品的自定义价格
以下是可以帮助您实现这一目标的两个简单步骤:
首先,在安装了自定义模块之后,您需要声明一个名为events的文件。xml来捕获产品添加到购物车后发生的事件
<vendor_name>/<module_name>/etc/frontend/events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_cart_product_add_after">
<observer name="customPriceInCart" instance="VendorName\ModuleName\Observer\CustomPriceInCart" />
</event>
</config>
在这里,您声明了一个名为customPriceInCart的观察者,该观察者将处理事件checkout_cart_product_add_add_after,之后Magento每次将产品添加到购物车时都会发送该事件。
接下来,我们创建观察者类
<vendor_name>/<module_name>/Observer/customPriceInCart.php
<?php
namespace VendorName\ModuleName\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;
class CustomPriceInCart implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer)
{
//get the item just added to cart
$item = $observer->getEvent()->getData('quote_item');
//(optional) get the parent item, if exists
$item = ($item->getParentItem() ? $item->getParentItem() : $item);
// set your custom price
$customPrice = 101;
$item->setCustomPrice($customPrice);
$item->setOriginalCustomPrice($customPrice);
$item->getProduct()->setIsSuperMode(true);
}
}
您的定制价格都会取代原来的价格
image.png