Magento 2 - Get product details in list view adding custom block using plugin

2.1k Views Asked by At

I was trying to use plugin system to modify block of every product listed.

I was able to set it up in this way:

Vendor/Module/etc/frontend/di.xml

<type name="Magento\Catalog\Block\Product\AbstractProduct">
    <plugin name="vendor.module.category.products.list" type="Vendor\Module\Plugin\Block\Product\AbstractProduct" />
</type>

Vendor/Module/Plugin/Block/Product/AbstractProduct.php

<?php

namespace Vendor\Module\Plugin\Block\Product;

class AbstractProduct
{
    public function afterGetProductDetailsHtml(
        \Magento\Catalog\Block\Product\AbstractProduct $subject,
        $result
    ) {
         // Here is where I want to pull product details like SKU
         // I also want to pull my custom helper method here
         return '<b>rendered additional html element</b>';
    }
}  

The problem is I am not able to pull product details in afterGetProductDetailsHtml. Does anybody know how to do that? Thank you in advance

1

There are 1 best solutions below

0
On BEST ANSWER

You need to used arround plugin instade of after plugin like this,

<?php

namespace Vendor\Module\Plugin\Block\Product;

class AbstractProduct
{
    public function aroundGetProductDetailsHtml(
        \Magento\Catalog\Block\Product\AbstractProduct $subject,
        callable $proceed)
    ) {
         // Here is where I want to pull product details like SKU
         // I also want to pull my custom helper method here
         return '<b>rendered additional html element</b>';
    }
}