Hallo zusammen!
in einem Projekt von mir sollen die Farbvarianten einzeln auf den Listings erscheinen - und nicht nur die Stammartikel.
Durch Recherche bin ich auf folgenden Foren-Thread gestoßen, bei dem einer der Shopware Mitarbeiter beschreibt, wie das technisch zu lösen sei:
https://forum.shopware.com/discussion/35578/artikelvarianten-als-eigenstaendige-artikel-in-kategorieuebersicht#Comment_154695
Ich habee auf diesem Fundament eine Anpassung durchgeführt und dies hat auch wunderbar funktioniert. Allerdings möchte ich ungerne direkt in Shopware-Klassen eigenen Code schreiben und wollte daher diese Anpassungen in ein Modul auslagern. Dabei allerdings stehe ich da vor einem Problem:
Wenn ich in einem Plugin die QueryBuilderFactory (aus dem SearchBundleDBAL) beim Event „Enlight_Bootstrap_AfterInitResource_shopware_searchdbal.dbal_query_builder_factory“ durch eine eigene ersetzen, welche ebenfalls das QueryBuilderFactoryInterface implementiert, dort die gewünschten Änderungen durchführen und die eigene QueryBuilderFactory, anstelle der ursprünglichen, in den Shopware DI-Container setzen, funktioniert das erstmal problemlos.
Allerdings kommt dann das große Problem, dass diverse Klassen (z.B. alle FacetHandler aus dem SearchBundleDBAL) im Konstruktor explizit die QueryBuilderFactory aus dem Namespace Shopware\Bundle\SearchBundleDBAL\QueryBuilderFactory entgegen nehmen. Dadurch funktioniert dann der Shop nicht mehr, da dort dann versucht wird die eigene QueryBuilderFactory reinzureichen.
Daher folgende Fragen:
1.) Gibt es hier irgend einen Weg das gewünschte Feature als Plugin umzusetzen - ohne direkt den Shopware-Code zu editieren?
2.) Wieso nehmen u.a. die ganzen FacetHandler nur direkt die Shopware\Bundle\SearchBundleDBAL\QueryBuilderFactory entgegen und nicht alle Objekte von Klassen, die das QueryBuilderFactoryInterface implementiert haben?
Vielen Dank im Voraus für Hilfe oder Gedankenanstöße jeder Art!