Legt man mehrere Shopping Worlds für eine Kategorie an werden alle erfassten Shopping Worlds untereinander angezeigt. Die Reihenfolge hierfür ist auf den ersten Blick nicht so richtig ersichtlich. Für meinen Usecase hatte ich mir gewünscht, dass es möglich ist dass trotz beliebig vieler Shopping Worlds für eine Kategorie (oder Startseite) nur eine einzige per Zufall angezeigt wird. Von Haus wird das Feature nicht unterstützt, mit etwas Gaffa-Tape und Spucke lässt sich dass „EmotionWidget“ aber patchen so dass es sich so verhält. In der Datei engine/Shopware/Controllers/Widgets/Emotion.php gibt es die Methode „indexAction“. Hier werden alle Shopping Worlds geladen ($emotions = $this->getEmotion($repository), und anschließend iteriert (foreach($emotions as &$emotions) {). Setzt man folgenden Code-Part zwischen diese Zeilen erreicht man das gewünschte: shuffle($emotions); //per zufall neu sortieren $emotions = array\_slice($emotions, 0, 1); //nur die erste shopping world behalten
Das Ergebnis sollte so aussehen: //... $emotions = $this-\>getEmotion($repository); //iterate all emotions to select the element data. shuffle($emotions); $emotions = array\_slice($emotions, 0, 1); foreach ($emotions as &$emotion) { //...
Disclaimer: Hier lässt sich viel kaputt machen, keine Garantie! Verwendung nur auf eigene Gefahr. Die Änderung wird unter Umständen beim Einspielen eines Updates überschrieben.