Zum Inhalt springen
TID Relevanz-Sortierung

TID Relevanz-Sortierung

Einführung

Das Relevanz-Sortierung Plugin fügt den Produktlisten in Shopware eine neue Sortieroption hinzu: Sortierung nach Relevanz. Diese Funktion arbeitet wie jede andere eingebaute Sortierung (z. B. Topseller, Niedrigster Preis), nutzt jedoch einen konfigurierbaren Relevanz-Score.

Funktionsweise

Der Relevanz-Score für jedes Produkt wird durch einen integrierten Algorithmus berechnet. Durch den Administrator kann beeinflusst werden, wie dieser Score zustande kommt:

  • Gewichtung verschiedener Score-Faktoren anpassen
  • Durch Boosts kann der Score für einzelne Produkte künstlich erhöht werden
  • Eigene Regelsätze über Produkt-custom_fields definieren

Nach der Konfiguration steht den Kunden die Option „Relevanz“ als Sortiermethode in jeder Produktliste zur Verfügung.

Konfiguration

Gewichtungsanpassungen

Dies ist die Formel, die zur Berechnung des Relevanz-Score für jedes Produkt genutzt wird:

Score =
  (Aktuelle Verkäufe × 4)    +
  (Marge ÷ 10)               +
  Produktalter               +
  Gesamte Verkäufe           +
  (Saisonale Verkäufe × 4)   +
  Lagerbestand               ±
  Custom-Field Boost         ±
  Rabattbonus                ±
  Manueller Boost

Durch die Zahlenfelder in der Plugin-Konfiguration unter dem Tab „Anpassungen“ kann gesteuert werden, wie der Algorithmus die Relevanz-Score-Faktoren gewichtet.

EinstellungBeschreibung
Aktuelle VerkäufeGewichtung für Produkte, die in dem konfigurierten Zeitraum verkauft wurden.
VerkaufsmargeGewichtung für die Gewinnmarge verkaufter Produkte.
RabattbonusBoost für aktuell reduzierte Produkte.
ProduktalterGewichtung für die Dauer, wie lange ein Produkt bereits verfügbar ist.
Gesamte VerkäufeGewichtung für die Gesamtzahl der Verkäufe.
Saisonale VerkäufeGewichtung für Produkte mit hohen Verkäufen in derselben Saison vergangener Jahre.
LagerbestandGewichtung für den verfügbaren Lagerbestand.

Custom-Boost-Regeln (YAML)

Komplexe Boost-Logik kann im Texteditor-Feld der Plugin-Konfiguration in YAML-Syntax definiert werden. Damit lassen sich individuelle Regelsätze über Produkt-custom_fields umsetzen.

Warning

Im Feld Custom Boost Regeln muss immer im Code-Editor gearbeitet werden. Der Code-Editor wird durch Klick auf das </>-Symbol in der rechten oberen Ecke aktiviert. Danach erscheint die kleine Zeilennummer 1. Nur so lässt sich YAML ohne Formatierungsprobleme eingeben.

Nach dem Speichern verlässt der Editor automatisch die Code-Ansicht und zeigt das YAML eventuell seltsam formatiert an, doch es funktioniert weiterhin korrekt. Zum Bearbeiten einfach erneut den Code-Editor mit dem </>-Symbol aktivieren.

Der YAML-Aufbau richtet sich danach, ob ein custom_field den Typ single oder multi hat:

ElementBeschreibung
field_typeDefiniert den Typ des Custom-Fields. "single" bedeutet, dass nur ein Wert enthalten ist, "multi" erlaubt mehrere Werte.
operatorVergleichsoperator zur Auswertung des Werts. Beispiel: ">" prüft, ob der Wert größer als der Vergleichswert ist. Unterstützt werden =, !=, <, >, <=, >=.
comparison_valueSchwellenwert zum Vergleich. Nur wenn die Bedingung erfüllt ist, wird der Boost angewendet.
boostWert, der zum Relevanz-Score addiert wird, wenn die Bedingung erfüllt ist.

Beispiel für single:

custom_field_technical_name:
    field_type: "single"
    operator: ">"
    comparison_value: "10"
    boost: "5"

Dieser Regelsatz erhöht den Score um 5, wenn der custom_field-Wert größer als 10 ist.

Bei multi-Feldern unterscheidet sich die Struktur leicht. Statt comparison_value gibt es rules:

ElementBeschreibung
match"none" bedeutet, dass die Regel greift, wenn kein Vergleichswert im Feld vorkommt. "any" greift, wenn mindestens ein Wert passt, "all" wenn alle passen.
operator (in)Prüft, ob der Feldwert in der Liste der Vergleichswerte enthalten ist.
operator (not_in)Prüft, ob der Feldwert nicht in der Liste enthalten ist.
comparison_valueListe von Werten, gegen die geprüft wird (immer als Array angeben, auch bei nur einem Wert).

Beispiel für multi:

custom_field_technical_name:
    field_type: "multi"
    boost: "3"
    rules:
        match: "any"
        operator: "in"
        comparison_value: ["test_option_3", "test_option_4"]

Dieser Regelsatz erhöht den Score um 3, wenn einer der Werte (test_option_3 oder test_option_4) im Feld enthalten ist.

Ein komplettes YAML-Beispiel mit single und multi kombiniert:

rating_custom_field:
    field_type: "single"
    operator: ">"
    comparison_value: "3.89"
    boost: "5"

custom_product_material_composition:
    field_type: "single"
    operator: "="
    comparison_value: "100% Cotton"
    boost: "12"

tids_product_customfields_testing:
    field_type: "multi"
    boost: "3"
    rules:
        match: "none"
        operator: "in"
        comparison_value: ["test_option_3", "test_option_4"]

Anwendung

Beispiel:

  1. Produkte mit aktuellen Verkäufen sollen geboostet werden.
  2. Produkte im Sale sollen im Score höher bewertet werden.
  3. Ein bestimmtes custom_field soll zusätzlich einen Boost erhalten.

Dafür wird:

  • Ein hoher Wert für Aktuelle Verkäufe und Rabattbonus in der Konfiguration gesetzt
  • Eine Custom-Rule im YAML definiert, die das gewünschte Feld boostet

Wird die Sortierung „Relevanz“ ausgewählt, erscheinen die passenden Produkte höher in der Liste.