Để các bạn có một cái nhìn nhìn tổng quan hơn về cách Plugin hoạt động trong Magento 2. Hôm nay mình sẽ hướng dẫn các bạn sử dụng Plugin để thay đổi tất cả tên của sản phẩm trong Magento 2. Bài viết này chỉ phù hợp với các bạn đang tìm hiểu về Magento thôi nhé.
Bước 1: Tạo một plugin
Đầu tiên các bạn phải xác định phương thức mà bạn muốn thay đổi. Ở đây tôi muốn thay đổi tên của sản phẩm sẽ hiển thị ở frontend. Và tôi tìm thấy phương thức getName trong class Magento\Catalog\Model\Product sẽ chịu trách nhiệm lấy tên sản phẩm và hiển thị nên tôi sẽ sử dụng plugin để thay đổi kết quả trả về của phương thức getName và thay đổi thành dòng chữ Vi-Magento HelloWorld. Tôi sẽ sử dụng lại module ViMagento_HelloWorld, các bạn có thể xem tại đây. Hiện tại project của tôi có ba sản phẩm như hình bên dưới:

ViMagento/HelloWorld/etc/di.xml
1 2 3 4 5 6 |
<?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="vimagento_helloworld_update_product_name" type="ViMagento\HelloWorld\Plugin\UpdateProductName" /> </type> </config> |
Bước 2: Tạo Plugin để xử lý
Các bạn tạo file ViMagento/HelloWorld/Plugin/UpdateProductName.php mình sẽ thay đổi kết quả trả về thành dòng chữ Vi-Magento HelloWorld .
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php namespace ViMagento\HelloWorld\Plugin; class UpdateProductName { public function afterGetName(\Magento\Catalog\Model\Product $subject, $result) { $result = "Vi-Magento HelloWorld"; return $result; } } |
Và kết quả là tất cả sản phẩm đều sẽ hiển thị với tên Vi-Magento HelloWorld ở frontend

Nếu bạn muốn tìm hiểu thêm về plugin có thể xem lại bài viết trước về before, around và after nhé.