用插件(Plugin)修改产品价格

在 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;
    }
}

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: