Hallo, wir haben ein Plugin geschrieben das auf der Listingseite für jedes Produkt zusätzliche Informationen auflistet. Wir haben als Vorlage ein Plugin aus dem Wiki genommen. Nun wollen wir dieses Plugin auch auf der Suchergebnissseite benutzen, kommen aber nicht auf das richtige subscribeEvent. Hier mal unser subscribeEvent für die Listingseite: public function install() { $this->subscribeEvent( ‚Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd‘, ‚onPostDispatchListing‘ ); return true; } public function onPostDispatchListing(Enlight_Event_EventArgs $args){ $sArticles = $args->getSubject(); $article = $args->getReturn(); … return $article; Über einen Tipp in die richtige Richtung würden wir uns sehr freuen. Grüße Christian
Hallo Christian, für die Suche ist der Controller /Frontend/Search zuständig. Bspw. ist folgendes möglich: $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_Frontend\_Search\_DefaultSearch', 'onFrontendSearch',0 );
Aber es gibt auch: Enlight()-\>Events()-\>notify('Shopware\_Controllers\_Frontend\_Search\_ModifySearchResult',array("subject" =\> $args-\>getSubject(),"search"=\>$search,"result"=\>$searchResults));
Schaue am besten mal in den Controller Search rein. Grüße Mathias
Hallo, danke erstmal für die schnelle Antwort. Leider habe ich es aber nicht geschafft es richtig einzubinden. Ich komme über das Plugin auf die Suchergebnisseite, kann dort aber nur eine globale Variable bereitstellen. Ich kann die jeweilige Artikel-ID nicht auslesen um weitere Daten in der $sArticle bereitzustellen. Beste Grüße Christian
Könntest du etwas Quellcode zur Verfügung stellen. So ist es schwierig zu sagen, warum es nicht funktioniert.
Hallo, hier der Quelltext aus der Listingseite. In dem Plugin wird die für jeden Artikel im Listing weitere Informationen ausgelesen. Im Template kann die Variable dann normal auslesen. public function install() { $this->subscribeEvent( ‘Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd’, ‘onPostDispatchListing’ ); return true; } public function onPostDispatchListing(Enlight_Event_EventArgs $args){ $sArticles = $args->getSubject(); $article = $args->getReturn(); … $article[‘NEUE_VARIABLE’] = SQL_ABFRAGE; … return $article; ------------------------- Danach habe ich versucht dies auch für die Suchergebnissseite einzubinden, es hat aber nicht so geklappt. Mein Ergebnis war dann nur das Einbinden einer globalen Variablen, dies ging aber an der Lösung weit vorbei. public function install() { $this->subscribeEvent( ‘Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd’, ‘onPostDispatchFrontend’ ); return true; } public function onPostDispatchFrontend(Enlight_Event_EventArgs $args){ … ------------------------- Beste Grüße Christian
Hi, hier ein kleiner Tipp: Die Suche und die Kategorie Listings funktionieren vom Prinzip her gleich. Zuerst werden über ein SQL Query entsprechende Artikel Ids ermittelt. Bei der Suche ist dies im Search-Adapter und bei den Listings ist dies in der sGetArticlesByCategory. Beide Funktionen benutzen jedoch die sGetPromotionById Funktion um die eigentlichen Artikel Daten zu laden. Daher kannst du hier einfach um die Artikel Daten zu erweitern die sGetPromotionById Events verwenden. Hoffe das hilft dir weiter. Gruß Oliver