# AlsoBought Vorschläge manipulieren

**URL:** <https://forum.shopware.com/t/alsobought-vorschlage-manipulieren/63788>\
**Category:** Programmierung\
**Created:** [3. Januar 2020 um 12:31 UTC](https://forum.shopware.com/t/alsobought-vorschlage-manipulieren/63788 "2020-01-03T12:31:19Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![TRuls](https://avatars.discourse-cdn.com/v4/letter/t/5f9b8f/32.png) [@TRuls](https://forum.shopware.com/u/TRuls)\
**Post date:** [3. Januar 2020 um 12:31 UTC](https://forum.shopware.com/t/alsobought-vorschlage-manipulieren/63788/1 "2020-01-03T12:31:19Z")

</div>

Hey zusammen,

ich würde gerne die vorgeschlagenen Produkte auf der Detail-Seite eines Produkts leicht manipulieren. Leider bin ich recht neu in der Shopware-Entwicklung, habe allerdings schon herausgefunden, dass die vom System bereitgestellten Vorschläge im View-Assignment “boughtArticles” gespeichert werden. Wenn ich das Event “Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Detail” subscribe, scheint die Variable noch nicht gesetzt zu sein, zumindest kommt bei folgendem Aufruf “NULL” raus:

```
    public static function getSubscribedEvents() {
		return [
			'Enlight_Controller_Action_PostDispatch_Frontend_Detail' => 'onFrontendDetail',
		];
	}

	public function onFrontendDetail(\Enlight_Event_EventArgs $arguments){
 
		$view = $arguments->get('subject')->View();
		$articles = $view->getAssign('boughtArticles');
		var_dump("Articles: ",$articles);

    }

```

Gibt es ein anderes Event, das hier besser wäre? Ich hatte schon mal auf einer anderen Seite was von “Enlight\_Controller\_Action\_PostDispatch\_Backend\_AlsoBought” gelesen, allerdings scheint das beim Frontend Detail nicht aufgerufen zu werden. Habt ihr irgendwelche Tipps für mich?

Danke 🙂

---

<div class="post-metadata">

**Author:** ![TRuls](https://avatars.discourse-cdn.com/v4/letter/t/5f9b8f/32.png) [@TRuls](https://forum.shopware.com/u/TRuls)\
**Post date:** [3. Januar 2020 um 14:12 UTC](https://forum.shopware.com/t/alsobought-vorschlage-manipulieren/63788/2 "2020-01-03T14:12:49Z")

</div>

Was ich auch probiert habe, ist es mit einem Hook auf die spezifische Methode der sMarketing-Klasse zu implementieren:

```
	public static function getSubscribedEvents() {
		return [
			'sMarketing::sGetAlsoBoughtArticles::after' => 'onSGetAlsoBoughtArticles'
		];
	}
	
	public function onSGetAlsoBoughtArticles(Enlight_Event_EventArgs $args){
		file_put_contents('C:/xampp/htdocs/b.txt', "a");

	}

```

Hier wird aber die onSGetAlsoBoughtArticles() nie aufgerufen, auch nach Neu-Installation und Löschen des sMarketing-Proxies.

---

<div class="post-metadata">

**Author:** ![TRuls](https://avatars.discourse-cdn.com/v4/letter/t/5f9b8f/32.png) [@TRuls](https://forum.shopware.com/u/TRuls)\
**Post date:** [3. Januar 2020 um 16:44 UTC](https://forum.shopware.com/t/alsobought-vorschlage-manipulieren/63788/3 "2020-01-03T16:44:56Z")

</div>

Habe das Problem nach einigem Ausprobieren endlich&nbsp;gefunden. Meine Lösung war, dass der Funktionsparametern bei Hooks vom Typ&nbsp;\Enlight\_Hook\_HookArgs sein muss und nicht&nbsp;Enlight\_Event\_EventArgs. Zum Überschreiben braucht man scheinbar auch ::replace, da beim call von ::after die Ausgabe der alsoBought-Articles schon passiert ist.
