Farbvarianten auf Listings

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! :slight_smile:

Genau das selbe Problem habe ich auch.
Die ganzen Facets erwarten QueryBuilderFactory und nicht QueryBuilderFactoryInterface somit kracht es.

Fatal error: Uncaught TypeError: Argument 1 passed to Shopware\Bundle\SearchBundleDBAL\FacetHandler\VoteAverageFacetHandler::__construct() must be an instance of Shopware\Bundle\SearchBundleDBAL\QueryBuilderFactory, instance of ShopwarePlugins\SwagPluginSystem\SearchBundleDBAL\QueryBuilderFactory given, called in /home/vagrant/www/shopware/var/cache/production____REVISION ___/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php on line 1370 and defined in /home/vagrant/www/shopware/engine/Shopware/Bundle/SearchBundleDBAL/FacetHandler/VoteAverageFacetHandler.php:72 Stack trace: #0 /home/vagrant/www/shopware/var/cache/production____ REVISION___/proxies/ShopwareProductionda39a3ee5e6b4b0d3255bfef95601890afd80709ProjectContainer.php(1370): Shopware\Bundle\SearchBundleDBAL\FacetHandler\VoteAverageFacetHandler->__construct(Object(ShopwarePlugins\SwagPluginSystem\SearchBundleDBAL\QueryBuilderFactory), Object(Doctrine\DBAL\Connection), Object(Shopware_Components_Snippet_Manager), Object(Shopware\Com in /home/vagrant/www/shopware/engine/Shopware/Bundle/SearchBundleDBAL/FacetHandler/VoteAverageFacetHandler.php on line 72 503 Service Unavailable