Hallo Allerseits!
Ich versuche, in Shopware 6 die Reihenfolge von Produkten in der Search- und Suggest-Funktion anhand eines eigenen Datenbankfeldes zu steuern. Ziel ist, dass Produkte mit höherem Wert in diesem Feld weiter oben erscheinen.
Was ist bisher versucht habe, hat zu keinen Erfolg geführt. ich weiß aufgrund von der logs, dass mein Subscriber definitiv getriggert wird, aber irgendwas scheine ich zu übersehen insofern es überhaupt möglich ist.
- FieldSorting / Criteria Events (
ProductSearchCriteriaEvent
,ProductSuggestCriteriaEvent
-
Idee:
FieldSorting
auf custom_field setzen. -
Problem: custom field ist kein offiziell registriertes Shopware-Feld .
-
Resultat: Criteria-Events ignorieren das Feld, Sortierung klappt nicht.
Direkter Query-Zugriff über Criteria (getQuery()
)
-
Versuch: Manuelles Hinzufügen von
ORDER BY msx_custom_ranking
übergetQuery()
. -
Problem:
getQuery()
existiert nicht aufProductSearchCriteriaEvent
oderProductSuggestCriteriaEvent
.
Event ProductSearchResultEvent
/ ProductSuggestResultEvent
-
Idee: Produkte nach dem Laden per Repository sortieren (
getSortedIdsForProducts()
) und dann die Elemente in$products->setElements()
ersetzen. -
Problem: Trotz korrektem Subscriber wurden die Produkte nicht korrekt sortiert angezeigt. Debugging-Logs zeigen zwar, dass Events gefeuert werden, aber die Liste bleibt unverändert
Repository
- Idee: eine Kombination aus Repository und einem angeänderten Subscriber nutzen
- Problem: das habe ich tatsächlich noch nicht finden können, abseits davon, dass es tricky ist beim kompletten umgehen der DAL eine saubere Suche zu schreiben
leider funktioniert das alles nicht, hat jemand noch eine Idee oder Tipps?
Danke im vorraus