Magento 2 Onlineshops erweiterte Suche Titel

In einem in unserer Webagentur programmierten Magento 2 Onlineshops standen wir vor der Herausforderung, in der Ergebnisliste der erweiterten Suche nur bestimmte Artikel anzuzeigen, bei uns Produkte mit einer bestimmten Attributausprägung, also: zeige nur Artikel in der Suchergebnisliste der erweiterten Suche, die das Attribut x mit dem Wert y besitzen.

 

 Hierzu empfiehlt es sich, ein kleines Plugin zu schreiben, wir haben dies getan unter

 

/app/code/Econcess/AdvancedSearchRestriction

 

Die di.xml sieht hierbei so aus (name und type natürlich frei bzw. gem. Architektur wählbar:

 

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
   <type name="Magento\CatalogSearch\Model\Advanced">
     <plugin name="Econcess-advancedsearchrestriction-catalogsearch-advanced" type="Econcess\AdvancedSearchRestriction\Plugin\ProductCollectionPrepareStrategyPlugin" sortOrder="1" />
   </type>
</config>

 

Dann noch den deklarierten Typ deklarieren unter 

 

/app/code/Econcess/AdvancedSearchRestriction/Plugin/ProductCollectionPrepareStrategyPlugin.php

 

Und fertig. In diesem Plugin holen wir uns nun die Suchergebnisliste (Collection) und können diese mit der Funktion

 

public function afterGetProductCollection(\Magento\CatalogSearch\Model\Advanced $subject, $result)

 

bearbeiten / nachfiltern. In unserem Falle ging es um das Attribut xy, das den Wert 33 haben sollte:

 

<?php

namespace Econcess\AdvancedSearchRestriction\Plugin;

class ProductCollectionPrepareStrategyPlugin

{

    public function afterGetProductCollection(\Magento\CatalogSearch\Model\Advanced $subject, $result)

    {           

                               $result->addAttributeToFilter(

                                               array(

                                                               array('attribute'=>'xy','eq'=>33)

                                               ));

        return $result;

    }  

}

 

Das war's! Gesehen in unserer Agentur in einem Magento 2 Shop mit Version CE 2.3.