Tutorial: Topseller nach Article Impressions, Preis und Lagerbestand auswählen

Hi Zusammen,

heute mal keine Frage von mir, sondern ein Tutorial (ich finde die Lösung so schön, dass ich sie teilen muss :slight_smile: )

Problem: Die Topseller sollen nach eigenen Kriterien ausgewählt werden:

  - Auswahl nicht nach Verkäufen, sondern Artikel Impressions in den letzten 4 Monaten
  - Artikel mit Lagerbestand 0 sollen ausgeblendet werden
  - Artikel mit Preis < 2 Euro sollen ausgeblendet werden

Erst wollte ich ganz hart die Funktion “sGetArticleCharts” in \engine\Shopware\Core\sArticles.php in einem eigenen Plugin überschreiben.
Jetzt habe ich allerdings eine Lösung mit pseudosales und mysql gefunden.

So geht’s:
 

  1. Backup der Shop Datenbank!!!

  2. In phpmyadmin in der Shopdatenbank folgendes mysql Kommando starten:

    UPDATE s_articles a

    INNER JOIN ( SELECT articleId, SUM(impressions) ‘sumimpr’ FROM s_statistics_article_impression WHERE date >= DATE_FORMAT(CURDATE(), ‘%Y-%m-01’) - INTERVAL 4 MONTH GROUP BY articleId ) i ON i.articleId = a.id

    INNER JOIN ( SELECT articleId, SUM(instock) ‘stock’ FROM s_articles_details GROUP BY articleId ) ad ON ad.articleId = a.id

    INNER JOIN ( SELECT articleId, price FROM s_articles_prices GROUP BY articleId ) ap ON ap.articleId = a.id

    SET a.pseudosales = IF(a.active = 1 AND ad.stock > 0 and price > 1.68, i.sumimpr,0)

Damit werden die Pseudosale Daten in den Artikeln mit der Anzahl der Artikelimpressions der letzten 4 Monate überschrieben, falls der Artikel aktiv ist, Lagerbestand hat und mehr als 1,68 netto kostet (Vorsicht: Falls Ihr manuell pseudosale Daten angelegt habt, geht alles verloren).

Unter “Einstellungen -> Grundeinstellungen -> Top Seller -> Artikel als Topseller markieren” könnt Ihr auswählen ab welcher Verkauf + Impression Schwelle, ein Artikel als Topseller markiert werden soll (bei mir funktioniert 100 gut).

Im Backend unter “Einstellungen -> Cache/Performance -> Einstellungen -> Top Seller” den Haken bei “Pseudo Verkäufe berücksichtigen” setzen.

Im gleichen Menü, den Topseller Index neu aufbauen.

Eventuell kann man das mysql Kommando als Cronjob ausführen lassen, damit die pseudosales aktualisiert werden.

Et voila: die Topseller sind neu ausgewählt.

Bei mir liefert das bessere Top Seller Ergebnisse als die Default Einstellung. Es lohnt sich mit den Parametern herumzuspielen. Beispielsweise könnte man die 
Impressions in der mysql Anweisung auch skalieren, um den Einfluss der Impressions auf die Topsellerauswahl zu variieren. Oder man kann die 4 Monatsspanne verkürzen,
um saisonale Effekte stärker zu berücksichtigen.

Generell sieht man, dass die Pseudosales mit mysql Kommandos sehr leistungsfähig sind!

Viel Spass

Jens