Magento 2 - Получить информацию о продукте в виде списка, добавив пользовательский блок с помощью плагина

Я пытался использовать систему плагинов для изменения блока каждого продукта в списке.

Я смог настроить его таким образом:

Производитель / модуль / и т.д. / интерфейс /di.xml

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

Производитель / модуль / плагин /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>';
    }
}  

Проблема в том, что я не могу вытащить детали продукта в afterGetProductDetailsHtml, Кто-нибудь знает, как это сделать? заранее спасибо

1 ответ

Решение

Вам нужно использовать плагин Arround вместо плагинов, как это,

<?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>';
    }
}  
Другие вопросы по тегам