Paginierung der Suchresultate mit externer API

Hallo zusammen,

ich versuche aktuell eine externe Suche in Shopware 6 einzubauen. Soweit bin ich auf einem guten Weg, allerdings scheint die Paginierung etwas kniffliger zu sein als gedacht. Bei Shopware 5 konnte man noch im „\Shopware\Bundle\SearchBundle\ProductNumberSearchResult“ die Gesamtanzahl der Produkte übermitten. Damit wusste Shopware wie die Paginierung aufzubauen ist.

Soweit ich gesehen habe gibt es so etwas in Shopware 6 leider nicht, da in dem Template in der Storefront „Resources/views/storefront/component/pagination.html.twig“ die Seitenanzahl anhand der Resultate berechnet wird. Wenn man eine externe Suche einbindet, ist es nicht üblich mehr als 200 Produkte über die API zu holen.

Was ist die empfohlene Vorgehensweise, etwa das Template zu überschreiben, oder gibt es da einen besseren Ansatz?

Danke und Liebe Grüße
Dominik

Hi Dominik,

hat die Shopware API überhaupt hier eine Funktion, oder geht es um die Findologic API? Die Pagination für Suchergebnisse bzw Listings sind für alle API Anfragen in SW6 jedenfalls die Selben:

https://docs.shopware.com/en/shopware-platform-dev-en/api/filter-search-limit?category=shopware-platform-dev-en/api

Aber wenn nun die Ergebnisse bzw die Artikelnummern aus Findologic kommen, dann müssen diese wohl (je nachdem ob server oder clientseitig) erneut ausgegeben werden. Ich vermute das sollte Serverseitig geschehen. Da wäre wohl ein eigener Storefront Controller welcher den Suchbegriff an die Findologic API sendet und das Listing der Suchergebnisse erstellt. Die Pagination sollte (wenn eine vorhanden ist) 1 zu 1 aus dem Original Listing-Controller für die Suche übernommen werden. Evtl. würde ich die Grundfunktionen auch Outsourcen, da die selbe Prozedur auch für das Autocomplete-Feld genutzt wird. Vg

Hallo @Moorleiche‍,

danke schonmal für deine Antwort! Aktuell haben wir bereits eine Anbindung in Entwicklung, welche bereits die Produkte an Shopware übermittelt.

> Die Pagination sollte (wenn eine vorhanden ist) 1 zu 1 aus dem Original Listing-Controller für die Suche übernommen werden.

Das Problem liegt allerdings darin, dass in Datei “Resources/views/storefront/component/pagination.html.twig” die Seitenanzahl anhand der Produktzahl ermittelt wird. Wenn ich hier aber mit einer externen API (z.B. FINDOLOGIC) arbeite, dann wird man niemals alle Produkte  von der API zurückspielen, da dies einen negativen Einfluss auf die Performance nimmt.

Meine Frage war darauf bezogen, ob man das Template manuell abändern sollte, oder ob es noch andere Möglichkeiten gibt, das Thema zu lösen. Eventuell hat Shopware hier eine Alternative für genau diesen Zweck; einer externen API-Anbindung für die Suche.

Danke und Liebe Grüße,
Dominik

Hey, gibt es denn Bei Findologic nicht eine Gesamtanzahl der Suchergebnisse, die man zurück geben kann?

https://github.com/shopware/platform/blob/6.1/src/Storefront/Resources/views/storefront/component/pagination.html.twig

bei dem Storefront Controller kann man die variablen entities und criteria ja überschreiben.