[Gelöst] Topseller Berechnung durch feste Vorgaben ersetzen

Hallo, bin neu hier (Gruß an alle) und habe ein Problem, für das ich im Forum keine Lösung gefunden habe: Ich möchte gerne die automatisch für jede Kategorie berechneten Topseller durch eigene Artikel-Vorgaben ersetzen lassen. Damit kann ich dann in Kategorie A für interessante Artikel aus Kategorie B,C und D werben. Das erscheint mir besser als eine Auflistung der angezeigten Kategorieartikel. Insbesondere wenn man nur um die 5 Artikel in einer Kategorie hat. In welcher Datei / Zeile wird der SQL Befehl abgesetzt um die Topseller Artikel zu berechnen? Dort könnte ich den SQL Befehl so umbauen, das bestimmte Artikel immer mit angezeigt werden. Ich sage schon mal danke für Eure Tipps Bernhard

Moin und herzlich Willkommen, engine/core/class/sArticles.php Funktion sGetArticleCharts Gut wäre natürlich, wenn du das ganze als Plugin realisieren würdest! Beispiel-Code: <?php class Shopware_Plugins_Frontend_MyCharts_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { $event = $this->createHook( 'sArticles', 'sGetArticleCharts', 'onCharts', Enlight\_Hook\_HookHandler::TypeReplace, 0 ); $this-\>subscribeHook($event); return true; } static function onCharts (Enlight\_Hook\_HookArgs $args) { // Hier deinen Code einbauen! $articles = array(1,2,3,4); // s\_articles.id foreach ($articles as $article){ $article = Shopware()-\>Modules()-\>Articles()-\>sGetPromotionById ('fix', 0, (int)$article); $articles[] = $article; } $args-\>setReturn($articles); } }

1 Like

Prima, danke schön! :thumbup: Mit welcher Variabel kann ich denn in der Codezeile die Kategorie abfragen? Ich möchte ja die Artikel pro Kategorie angeben können. // // Artikelauswahl nach Kategorie // // if else oder switch case oder aus Array (mal sehen was es wird ...) // if (Kategorie == xyz) { $articles = array(1,2,3,4); // s\_articles.id } else { // Und so weiter und so fort ;) } In ein Plugin einbauen *Uff* Das Beste wäre es natürlich. :sunglasses: Ich muss mir mal das Tutorial zu den Plugins mal genauer anschauen. Ein funktionales Backend zu bauen wird wahrscheinlich 5x so lange dauern wie die Artikelauswahl nach Kategorie selbst zu coden. :shock: :wink:

Ein Backend musst du ja nicht zwangsläufig entwickeln - weiß ja nicht wie komfortabel du das haben möchtest - im Notfall definierst du Artikel & Kategorien halt statisch - $articles[3] = array(1,2,3,4,5); $articles[15] = array(1,2,3,4,5); $articles[25] = array(1,2,3,4,5); $articles[35] = array(1,2,3,4,5); Also die ID der Kategorie als Key. Dann vor der Schleife: $request = $args->getSubject()->Request(); $category = $request->sCategory; if (empty($category)) $category = 3; foreach ($articles[$category] as $article){ Dafür ein schickes ExtJS Backend zu bauen, ist tatsächlich etwas Aufwand :sunglasses:

1 Like

Nochmals danke Stefan für die guten Tipps! Ich habe das jetzt folgendermaßen gelöst: - In der Artikelübersicht lasse ich die Spalte “ID” anzeigen. - Über den Freitext 6 einer jeden Kategorie kann man eine Komma separierte Liste von Artikel-IDs eingeben. - Ist kein Freitext 6 belegt, dann wird der Freitext 6 der ersten (Hauptkategorie) genommen. - Die neuen Artikel werden zuerst in der Topsellerliste aufgezeigt und dann mit den normalen Topsellern aufgefüllt. - Sollten zusammen mehr Topseller Artikel als maximal erlaubt zusammen kommen, dann wird alles nach dem Maximum verworfen. So kann man jede Kategorie einzeln ansteuern aber trotzdem Artikel auch global bewerben. Funktioniert prima! :sunglasses: