In Magento plugins provide a powerful way to extend and customize the functionality of core modules without modifying their original code. This is achieved by intercepting method calls and executing your own logic before, after, or around the original method. In this article, we'll focus on "before" plugins with a practical example.
A "before" plugin allows you to execute your code before the original method of a class is called. This is useful for:
What Magento Modules Are Used For
Let's say you want to add a prefix to the name of every product before it's saved in Magento 2. You can achieve this using a "before" plugin.1. Create the Plugin Class:Create a file named BeforeSaveProduct.php
in the following directory:app/code/YourVendor/YourModule/Plugin/Model/Product
<?php
namespace YourVendor\YourModule\Plugin\Model\Product;
class BeforeSaveProduct{ public function beforeSave(\Magento\Catalog\Model\Product $subject) { $originalName = $subject->getName(); $prefix = "[Your Prefix] "; $newName = $prefix . $originalName; $subject->setName($newName);
return [$subject]; // Important: Return the modified subject }}
2. Declare the Plugin in
di.xml
:Declare your plugin in your module's di.xml
file located at app/code/YourVendor/YourModule/etc/di.xml
:
Explanation:
type name="Magento\Catalog\Model\Product"
: This specifies the class you want to intercept (Magento\Catalog\Model\Product
).plugin name="your_module_before_save_product"
: This is a unique identifier for your plugin.type="YourVendor\YourModule\Plugin\Model\Product\BeforeSaveProduct"
: This specifies the class that contains your plugin logic.sortOrder="10"
: This determines the order in which plugins are executed if multiple plugins intercept the same method.disabled="false"
: This indicates whether the plugin is enabled or disabled.3. Flush the Cache:After creating the plugin class and declaring it in di.xml
, flush the Magento cache:
Now, whenever a product is saved in Magento 2, your plugin will add the specified prefix to the product name before it's stored in the database
This example demonstrates a simple use case of a "before" plugin. You can apply this concept to various scenarios to customize Magento 2 functionality according to your needs.
https://commercemarketplace.adobe.com/bsscommerce-image-converter.html