# Kurze Frage: Wie Event im Plugin richtig nutzen?

**URL:** <https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [14. Januar 2013 um 11:18 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946 "2013-01-14T11:18:21Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![endzeit](https://avatars.discourse-cdn.com/v4/letter/e/ecd19e/32.png) [@endzeit](https://forum.shopware.com/u/endzeit)\
**Post date:** [14. Januar 2013 um 11:18 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/1 "2013-01-14T11:18:21Z")

</div>

Hallo, ich schreibe einen Preisfilter für die Listingseiten und hänge an einem eher kleinen Problem: Ich subscribe mich auf den onFilterSql event in meinem Plugin: ` protected function subscribeEvents() { $this-\>subscribeEvent( 'Shopware\_Modules\_Articles\_sGetArticlesByCategory\_FilterSql', 'onFilterSql' ); } public function onFilterSql(Enlight\_Event\_EventArgs $args) { $view = $args-\>getSubject(); // Was nun, wie kann ich das SQL Statement bearbeiten? } } ` Der event wird in der /engine/core/class/sArticles.php emitted, und zwar so (sql statement verkürzt): ` $sql = " SELECT a.id as articleID, aDetails.id AS articleDetailsID, a.notification as notification, \*\*\* SNIP \*\*\* WHERE c.id=$categoryId AND c2.active=1 AND c2.left \>= c.left AND c2.right \<= c.right AND ac.articleID=a.id AND ac.categoryID=c2.id AND ag.articleID IS NULL $addFilterWhere $supplierSQL GROUP BY a.id ORDER BY $orderBy LIMIT $sLimitStart, $sLimitEnd "; $sql = Enlight()-\>Events()-\>filter('Shopware\_Modules\_Articles\_sGetArticlesByCategory\_FilterSql', $sql, array('subject' =\> $this, 'id' =\> $categoryId)); $articles = Shopware()-\>Db()-\>fetchAssoc($sql);` Ich will weitere WHERE condititions zu $sql hinzufügen, wie mache ich das? Soll ich in meiner onFilterSql funktion $args nutzen oder den return value? Ich finde einfach keine Möglichkeit mir auszugeben wie $args aussieht, egal ob var\_dump, print\_r oder FirePHP - nichts funktioniert. Vielen Dank!

---

<div class="post-metadata">

**Author:** ![endzeit](https://avatars.discourse-cdn.com/v4/letter/e/ecd19e/32.png) [@endzeit](https://forum.shopware.com/u/endzeit)\
**Post date:** [14. Januar 2013 um 11:28 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/2 "2013-01-14T11:28:20Z")

</div>

Achso, nochmal direkter formuliert: Das dranhängen an den Event funktioniert, ich weiß nur nicht wie/was ich zurückgeben muss. 😉

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [14. Januar 2013 um 12:01 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/3 "2013-01-14T12:01:20Z")

</div>

Hallo endzeit, versuch’ es mal so: ` $getFilterData = $args-\>getReturn(); ` Dort dürftest du nun die Daten finden, die du einfach anpassen und zurückgeben kannst. Gruß, Patrick :shopware:

---

<div class="post-metadata">

**Author:** ![endzeit](https://avatars.discourse-cdn.com/v4/letter/e/ecd19e/32.png) [@endzeit](https://forum.shopware.com/u/endzeit)\
**Post date:** [14. Januar 2013 um 13:17 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/4 "2013-01-14T13:17:05Z")

</div>

Super, damit gehts. :thumbup:

---

<div class="post-metadata">

**Author:** ![teapavillion](https://avatars.discourse-cdn.com/v4/letter/t/b38774/32.png) [@teapavillion](https://forum.shopware.com/u/teapavillion)\
**Post date:** [22. Januar 2013 um 11:09 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/5 "2013-01-22T11:09:07Z")

</div>

Soweit so gut es scheint zu klappen. Mein Problem ist jetzt das man so zwar die SQL Abfrage modifizieren kann, nicht jedoch aber die SQL Abfrage danach die die Anzahl der Artikel ausgibt. Habe ich oben z.B. die SQL Anfrage modifiziert, so das mir nur Artikel ausgegeben werden die z.B. ein bestimmtes Attribut gesetzt haben, so zeit mir die Anzeige der Anzahl der gefunden Artikel immernoch den vorherigen wert an, da bei der Berechnung der Anzahl wieder eine andere SQL Anfrage benutzt wird, welche nicht über ein Hook modifizierbar ist. Hat da jemand eine Lösung?

---

<div class="post-metadata">

**Author:** ![mablae](https://avatars.discourse-cdn.com/v4/letter/m/ed8c4c/32.png) [@mablae](https://forum.shopware.com/u/mablae)\
**Post date:** [22. Januar 2013 um 12:53 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/6 "2013-01-22T12:53:04Z")

</div>

Da braucht es wohl ein neues Event. Oder ein Refactoring des aktuellen Events. Hab mir den Code aber nicht angeschaut. Gruß Malte

---

<div class="post-metadata">

**Author:** ![teapavillion](https://avatars.discourse-cdn.com/v4/letter/t/b38774/32.png) [@teapavillion](https://forum.shopware.com/u/teapavillion)\
**Post date:** [22. Januar 2013 um 12:58 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/7 "2013-01-22T12:58:26Z")

</div>

Ja ein neues Event wäre Super als Einsprung. Ich frage mich nur wieso Shopware so etwas zwar vorsieht aber dann an der stelle damit „gegeizt wurde“ was macht es für einen logischen Sinn das man die SQL Abfrage für die Artikel verändern kann per Event aber eben die Berechnung der anzahl nicht einfach aus diesen Artikeln gezogen wird sondern extra über eine SQL Abfrage errechnet wird? Ich habe nun ein Event eingebunden nicht schön aber ich hoffe meine erstelltes Ticket wird in einer neuen Shopwareversion berücksichtigt, damit das System Updatesicher bleibt. Gruß Florian

---

<div class="post-metadata">

**Author:** ![mablae](https://avatars.discourse-cdn.com/v4/letter/m/ed8c4c/32.png) [@mablae](https://forum.shopware.com/u/mablae)\
**Post date:** [22. Januar 2013 um 13:32 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/8 "2013-01-22T13:32:49Z")

</div>

Ja, möglich wäre es einfach das Array per count() zu zählen, anstatt extra ein Query gegen die DB zu werfen! Gute Idee! Gruß Malte

---

<div class="post-metadata">

**Author:** ![finkkraft](https://avatars.discourse-cdn.com/v4/letter/f/3bc359/32.png) [@finkkraft](https://forum.shopware.com/u/finkkraft)\
**Post date:** [28. Mai 2013 um 15:30 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/9 "2013-05-28T15:30:56Z")

</div>

hallo gemeinde, der code von patrick: `$getFilterData = $args-\>getReturn();` liefert mir einen sql string zurück in dem alle variablen ($select\_price, $priceForBasePrice usw.) bereits gefüllt sind. gibt es eine möglichkeit, diese variablen über das event anzusprechen. im speziellen möchte ich die variable $addFilterWhere füllen, d. h. ich muss nur die where klausel ergänzen. bin mir bei der sache auch nicht ganz sicher, ob ich ein verständnis-problem habe. evtl. ist es seitens shopware so angedacht, dass man den sql-string über reguläre ausdrücke editiert und diesen dann zurück gibt?

---

<div class="post-metadata">

**Author:** ![designverign](https://avatars.discourse-cdn.com/v4/letter/d/a8b319/32.png) [@designverign](https://forum.shopware.com/u/designverign)\
**Post date:** [10. Juli 2013 um 22:12 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/10 "2013-07-10T22:12:08Z")

</div>

Hallo, ich habe genau dieselbe Frage. Soll ich jetzt mit String-Operationen den SQL-Query auseinanderschnippeln? Das kann doch nicht ernsthaft der einzige Weg sein, den Query zu modifizieren? ST

---

<div class="post-metadata">

**Author:** ![Liverson](https://avatars.discourse-cdn.com/v4/letter/l/b19c9b/32.png) [@Liverson](https://forum.shopware.com/u/Liverson)\
**Post date:** [16. April 2014 um 12:52 UTC](https://forum.shopware.com/t/kurze-frage-wie-event-im-plugin-richtig-nutzen/10946/11 "2014-04-16T12:52:42Z")

</div>

ich müsste eigentlich auch nur den Part in $addFilterSQL des SQL-Strings modifizieren. Gibt es da keine Möglichkeit? Kann ja nicht den kompletten SQL-String neu aufbauen…
