在 Magento2 中,使用插件来修改产品价格是一个不错的选择,同时也是一种趋势。通常,有许多办法可以修改产品价格,可能你知道使用 Event - Observe 或者如果 Event 不支持就重写。然而在同一个文件中,不支持两个模块同时自定义重写,这会导致冲突,并且不生效。
第一步:添加 di.xml 文件
确定你想要激活插件的地方是至关重要的,然后再添加 di.xml 文件。以下是前端部分的示例:
<config>
<type name="Magento\Catalog\Model\Product">
<plugin name="change_product" type=" Mageplaza\HelloWorld\Plugin\Product " sortOrder="1" disabled="true"/>
</type>
</config>
第二步:修改产品价格
打开文件夹 “Mageplaza\HelloWorld\Plugin”,添加新的类 Product.php 。有两种方法:
-
在原来的方法里修改值
-
在调用原来的方法之后修改值
原来的方法 getPrice() 执行完成后的结果是 $result 。比如,把产品价格乘以 2 。
<?php
namespace Mageplaza\HelloWorld\Plugin;
class Product
{
public function afterGetPrice(\Magento\Catalog\Model\Product $subject, $result)
{
return $result * 2;
}
}