# Ajax Suchergebnis manipulieren

**URL:** https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [31. März 2014 um 12:47 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451 "2014-03-31T12:47:39Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [31. März 2014 um 12:47 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/1 "2014-03-31T12:47:39Z")

</div>

Hallo, ich möchte gern das Suchergis aus Shopware\_Controllers\_Frontend\_AjaxSearch::doSearch manipulieren. getReturn bringt mir nur „true“. Wie komme ich an das Suchergebnis ran? vielen Dank.

---

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [3. April 2014 um 09:12 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/2 "2014-04-03T09:12:05Z")

</div>

374 Zugriffe und keine Antwort ;-(

---

<div class="post-metadata">

### Author: ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)
#### Post date: [3. April 2014 um 20:08 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/3 "2014-04-03T20:08:21Z")

</div>

naja, der Rückgabewert ist ja nur true 😉 Da wirst du nur mit Replace weiterkommen. Sprich die komplette Funktion überschreiben. Ich denke einen anderen Weg gibt es nicht.

---

<div class="post-metadata">

### Author: ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)
#### Post date: [3. April 2014 um 20:14 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/4 "2014-04-03T20:14:54Z")

</div>

In der Shopware\_Controllers\_Frontend\_AjaxSearch::doSearch() kannst du doch sogar über ein Filter Event einen eigenen Adapter setzen. Also einfach einen eigenen Adapter schreiben, diesem zb vom Default Adapter erben und dort deine Änderungen machen. Oder setz dich mit einen after hook nach doSearch(), hol dir mit getResults() die Ergebnisse und setze sie mit setResults() neu. Viele Grüße

---

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [3. April 2014 um 23:46 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/5 "2014-04-03T23:46:29Z")

</div>

[quote=„Aquatuning GmbH“]In der Shopware\_Controllers\_Frontend\_AjaxSearch::doSearch() kannst du doch sogar über ein Filter Event einen eigenen Adapter setzen. Also einfach einen eigenen Adapter schreiben, diesem zb vom Default Adapter erben und dort deine Änderungen machen. Oder setz dich mit einen after hook nach doSearch(), hol dir mit getResults() die Ergebnisse und setze sie mit setResults() neu. Viele Grüße[/quote] hi, vielen dank für deine Antwort. Filter-Event hatte ich schon probiert, da bin ich irgend wie auch cniht wieter gekommen. Wenn ich einen Hook nach doSearch registriere bekome ich mit getResults auch nix zurück. ` /\*\* \* AjaxSearch Hook \* \*/ private function subscribeEvents() { $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_AjaxSearch::doSearch::after', 'afterDoAjaxSearch' ); } /\*\* \* @param Enlight\_Hook\_HookArgs $args \*/ public function afterDoAjaxSearch(Enlight\_Hook\_HookArgs $args) { $results = $args-\>getResults(); Shopware()-\>Debuglogger()-\>info('', $results); } ` auch wenn ich versuche mit $args-\>setResults() das result zu überschreiben passiert nix. irgendwo ist hier doch der Wurm drin…

---

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [3. April 2014 um 23:48 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/6 "2014-04-03T23:48:33Z")

</div>

ich habe gerade gesehen, dass getResults protected ist…

---

<div class="post-metadata">

### Author: ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)
#### Post date: [4. April 2014 um 09:09 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/7 "2014-04-04T09:09:34Z")

</div>

Oh… richtig. Du kannst natürlich auch einen after hook auf getResults() setzen und dort direkt die Rückgabe manipulieren. Die “sauberste” Methode ist aber weiterhin der eigene Search Adapter, den du über das Filter Event injizierst. Viele Grüße

---

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [6. April 2014 um 07:56 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/8 "2014-04-06T07:56:04Z")

</div>

Ok, danke. Ich muss mal schauen wie ich das mit dem Adapter gelöst kriege. Gesendet von meinem iPhone mit Tapatalk

---

<div class="post-metadata">

### Author: ![hbee](https://avatars.discourse-cdn.com/v4/letter/h/f08c70/32.png) [@hbee](https://forum.shopware.com/u/hbee)
#### Post date: [7. April 2014 um 23:35 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/9 "2014-04-07T23:35:00Z")

</div>

hi, ich komme hier irgend wie nicht richtig weiter. Für die normale Suchergebnisseite manipuliere ich jetzt einfach die Templatevariable $sSearchResults. Das ist zwar irgendwie dirty, funktioniert aber gut. Für die AjaxSearch klappt das aber nicht. Wenn ich mich für Enlight\_Controller\_Action\_Frontend\_AjaxSearch\_Index registriere ist Enlight\_Event\_EventArgs leer. Hier komme ich also so auch cniht an die View ran. Jetzt dachte ich mir, ich mache einfach einen Hook auf Shopware\_Components\_Search::getAdapter::after und setze einen eigenen Adapter. aber hier kann ich mich so nicht einhängen. Auf das Filter-Event in Shopware\_Controllers\_Frontend\_AjaxSearch::doSearch() kann ich mich zwar registrieren aber hier komme ich auch nicht weiter. Hier habe ich ja keinerlei Parameter zur Verfügung. Hat jemand noch mal einen Ansatz oder Code-Schnipsel wie ich an das SearchResult der AjaxSearch komme? vielen Dank.

---

<div class="post-metadata">

### Author: ![agenturtriebwerk](https://avatars.discourse-cdn.com/v4/letter/a/b5ac83/32.png) [@agenturtriebwerk](https://forum.shopware.com/u/agenturtriebwerk)
#### Post date: [6. August 2014 um 10:57 UTC](https://forum.shopware.com/t/ajax-suchergebnis-manipulieren/19451/10 "2014-08-06T10:57:35Z")

</div>

falls du das Problem noch nicht gelöst hast, hier ein Ansatz: (musste bei mir das Ergebnis auch “modifizieren”, da ich noch article\_attributes eingebaut habe welche ausgewertet werden müssen) ich habe ein Plugin wo ich all meine Modifys mache, dort habe ich dann einen Event-Listener eingebaut ` $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Search\_SelectAdapter', 'searchadapter',100 );` dann natürlich noch ` public function searchadapter(Enlight\_Event\_EventArgs $args) { $this-\>Application()-\>Loader()-\>registerNamespace( 'Shopware\_Components', $this-\>Path() . 'Components/' ); $adapter=new Shopware\_Components\_Search\_Adapter\_Default(Shopware()-\>Db(), Shopware()-\>Cache(), new Shopware\_Components\_Twajaxsearch(), Shopware()-\>Config()); return $adapter; } ` in dieser Funktion ist der angepasste Parameter mit deiner eigenen Klasse wichtig im Ordner Components dann noch die Klasse, welche einfach von der Search Result erbt da drin kannst du dann die Funktionen überschreiben und machen was du willst ` class Shopware\_Components\_Twajaxsearch extends Shopware\_Components\_Search\_Result\_Abstract{ public function getResult() { $ergebniss=$this-\>result; /\* modify am ursprünglichen ergebnis array \*/ return $ergebniss; } } ` um dann auch noch die korrekte Anzahl der Ergebnisse auszugeben einfach ` public function getResultCount(){ return count($this-\>getResult()); } ` mit einfügen
