Eu criei um plugin para adicionar link para cada produto, como abaixo:
<?php
namespace Vendorname\Modulename\Plugin;
class ProductData
{
protected $urlInterface;
protected $scopeConfig;
public function __construct(
\Magento\Framework\UrlInterface $urlInterface,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
) {
$this->urlInterface = $urlInterface;
$this->scopeConfig = $scopeConfig;
}
public function aroundGetProductDetailsHtml(
\Magento\Catalog\Block\Product\ListProduct $subject,
\Closure $proceed,
\Magento\Catalog\Model\Product $product
)
{
$result = $proceed($product);
return $result . '<a href="#">mydata</a>';
return $result;
}
}
Acima está funcionando bem o link mydata adicionado a todos os produtos. Mas não está funcionando na página de pesquisa. Alguém pode me ajudar a adicionar link para o produto da página de pesquisa usando o plugin
arquivo di.xml
<?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\Block\Product\ListProduct">
<plugin name="my-block"
type="Vendorname\Modulename\Plugin\ProductData"
sortOrder="10"/>
</type>
</config>
di.xml
arquivo, por favor?Respostas:
Basicamente, a página de pesquisa usa o mesmo modelo da lista de produtos, mas usa um bloco de tipo virtual que usa a
Magento\Catalog\Block\Product\ListProduct
classe que você está plug-in.É aí que a documentação oficial é confusa, porque na lista de limitações de plugins , diz-se que:
No entanto, o exemplo a seguir é dado:
E diz-se que:
Realmente confuso aqui, o que eu tentaria se fosse você ainda tentaria conectar o tipo virtual atualizando o seu
di.xml
desta forma:fonte
fonte
adicione isso no seu di.xml. sendo exibido na página de pesquisa de catálogo.
fonte