Artikel erweitern auf Suchergebnisseite

Hallo zusammen,

ich möchte die Artikel auf der Suchergebnisseite erweitern.

Dazu gehe ich folgend vor:

 public function install() {

 $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_Frontend\_Search\_DefaultSearch', 'onFrontendSearch',0 );

 return true; }

 public function onFrontendSearch(Enlight\_Event\_EventArgs $args) {

}

Wie müsste ich grundsätzlich in meiner onFrontendSearch() Funktion vorgehen. Könnt ihr mir hier ein Beispiel geben?

Ich habe in der Artikellisten Ansicht schon sowas gemacht. hier scheint die Vorgehensweise aber eine Andere zu sein.

 

 $this-\>subscribeEvent( 'Shopware\_Modules\_Articles\_sGetArticlesByCategory\_FilterLoopEnd', 'onPostDispatchListing' );

 public function onPostDispatchListing(Enlight\_Event\_EventArgs $args) { $sArticles = $args-\>getSubject(); $article = $args-\>getReturn(); $filtergroupid = Shopware()-\>Db()-\>fetchOne("SELECT a.filtergroupID FROM s\_articles a WHERE a.id = ?",array($article['articleID'])); if (!empty($filtergroupid)) $article['sProperties'] = $sArticles-\>sGetArticleProperties($article['articleID'], $filtergroupid); 

 return $article; }

 

Danke für Eure Hilfe!

 

 

Hi,

in der 5er-Version geht das mit den StoreFront-Komponenten ganz gut. Zum generellen Konzept siehe hier, zum „Erweitern“ / Dekorieren von Services gibt es dieses Dokument. Vom Prinzip her musst du \Shopware\Bundle\SearchBundle\ProductSearch dekorieren und dann in deiner Search-Methode das Ergebnis anpassen. Alternativ kannst du auch \Shopware\Bundle\StoreFrontBundle\Service\Core\ListProductService dekorieren - das wird auch von der Suche verwendet. Das Praktische bei letzterem ist halt, dass das von der Suche ebenso wie von den Listings benutzt wird, wenn gewünscht hast du deine Erweiterung also direkt überall verfügbar.

Daniel