Créer un plugin sur Magento 2

Les plugins dans Magento 2 permettent de modifier le comportement des classes publiques en interceptant des méthodes et en exécutant du code avant, après ou autour de ces méthodes. Voici donc le tutoriel Magento 2 qui vous permettra de mettre en place un plugin !

plugins magento 2

Étape 1: Créez un module

A l’aide du tutoriel ?Créer un module Magento 2?, créez votre module Gone/MyPlugin dans le répertoire app/code.

Étape 2: Identifiez la classe et la méthode à intercepter

Supposons que vous souhaitez intercepter la méthode getPrice de la classe MagentoCatalogModelProduct.

Étape 3: Déclarez le Plugin

Dans votre module, créez ou ouvrez le fichier di.xml dans le dossier etc.

Ajoutez le code suivant :

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Model\Product">
<plugin name="mon_plugin_prix" type="Gone\MonPlugin\Plugin\Product" sortOrder="1"/>
</type>
</config>

Étape 4: Créez le fichier de plugin

Dans app/code/Gone/MyPlugin/Plugin, créez un fichier appelé Product.php.

Méthode before

La méthode before vous permet de modifier les arguments qui seront passés à la méthode originale.

<?php
namespace Gone\MyModule\Plugin;

class Product
{
public function beforeGetPrice(\Magento\Catalog\Model\Product $subject)
{
$originalPrice = $subject->getData('price');
return [$originalPrice * 0.9]; // Applique une réduction de 10%
}
}

Méthode after

La méthode after vous permet de modifier le résultat retourné par la méthode originale.

public function afterGetPrice(\Magento\Catalog\Model\Product $subject, $result)
{
return $result 10; // Ajoute 10 au prix original
}

Méthode around

La méthode around permet de faire des actions avant et après la méthode originale. Elle peut aussi éviter l’appel de la méthode originale.

public function aroundGetPrice(\Magento\Catalog\Model\Product $subject, callable $proceed)
{
$originalPrice = $subject->getData('price');
$discountedPrice = $originalPrice * 0.9; // Applique une réduction de 10%
$subject->setData('price', $discountedPrice);

// Exécute la méthode originale et stocke le résultat
$result = $proceed();

// Après avoir exécuté la méthode originale, vous pouvez ajouter d'autres logiques
return $result 5; // Ajoute 5? au prix
}

Après avoir ajouté ces fichiers, nettoyez le cache de Magento :

php bin/magento cache:clean

Étape 6: Testez votre plugin

Maintenant, quand la méthode getPrice de la classe MagentoCatalogModelProduct sera appelée (fiche produit, panier ?), votre plugin interviendra selon les méthodes before, after et around que vous avez définies.

Et voilà, vous avez créé un plugin dans Magento 2 ! Vous pouvez utiliser les méthodes before, after, et around pour influencer le comportement des classes de différentes manières. Notez que vous pouvez utiliser toutes ces méthodes dans un seul plugin, mais faites attention aux interactions entre elles. Pour toute question sur le sujet, n’hésitez pas à suivre une de nos formations à Magento 2 ou à prendre contact avec notre agence Magento !