Magento 2 - 在列表视图中获取产品详细信息,使用插件添加自定义块

我试图使用插件系统修改列出的每个产品的块。</ p>

< p>我能够以这种方式进行设置:</ p>

供应商/模块/ etc / frontend / di.xml </ strong> </ p>


</ p>

 &lt; type name =“Magento \ Catalog \ Block \ Product \ AbstractProduct”&gt; 
&lt; plugin name =“vendor.module.category .products.list“type =”Vendor \ Module \ Plugin \ Block \ Product \ AbstractProduct“/&gt;
&lt; / type&gt;
</ code> </ pre>

</ p>

供应商/模块/插件/块/产品/ AbstractProduct.php </ strong> </ p>

 &lt;?php 

namespace供应商 \ Module \ Plugin \ Block \ Product;

class AbstractProduct
{
公共函数afterGetProductDetailsHtml(
\ Magento \ Catalog \ Block \ Product \ AbstractProduct $ subject,
$ result
){
// 这里是我想要提取产品详细信息的地方,例如SKU
//我还想在此处提取我的自定义帮助方法
返回'&lt; b&gt;渲染其他html e lement&lt; / b&gt;';
}
}
</ code> </ pre>

问题是我无法在 afterGetProductDetailsHtml </ code>中提取产品详细信息 。
有人知道怎么做吗? 提前谢谢</ p>
</ div>

展开原文

原文

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

dqndc26628
dqndc26628 我发布回答,请接受,所以它也会帮助社区中的其他人。
接近 3 年之前 回复
douzhuo8312
douzhuo8312 有效!非常感谢。
接近 3 年之前 回复
douchuza8908
douchuza8908 好的,试试让我知道。
接近 3 年之前 回复
douyin4561
douyin4561 我认为他们都是平等的......让我试试看,谢谢!
接近 3 年之前 回复
dsh84723
dsh84723 你试过插件吗?因为在该插件中,您可以获得产品详细信息。
接近 3 年之前 回复

1个回答



你需要像这样使用插件之后的arround插件instade,</ p>

 &lt  ;?php 

namespace Vendor \ Module \ Plugin \ Block \ Product;

class AbstractProduct
{
public function aroundGetProductDetailsHtml(
\ Magento \ Catalog \ Block \ Product \ AbstractProduct $ subject,
callable $ 继续)
){
//这里是我想要提取产品详细信息的地方,例如SKU
//我还想在此处提取我的自定义帮助方法
返回'&lt; b&gt;渲染其他html元素&lt; / b&gt ;';
}
}
</ code> </ pre>
</ div>

展开原文

原文

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>';
    }
}  

立即提问
相关内容推荐