<ws-search-result> ist dafür verantwortlich, die Ergebnisse einer Suche oder Filterung in der Storefront darzustellen. Sie verarbeitet die Antwort (Response) des Such-Moduls und gibt für jedes gefundene Produkt bzw. jede gefundene Kategorie eine Referenz aus.
Komponente
Ergebnisse werden pro Index gruppiert - für jeden Index (z.B.product, category) wird eine eigene <ws-search-result>-Instanz verwendet, die frei im Layout platziert werden kann.
source: Gibt den Quellindex an, dessen Ergebnisse diese Instanz darstellt. Wird keinsourcegesetzt, verhält sich die Komponente wie bisher. Mögliche Werte:productcategorycontent
use-ajax: Gibt an, ob ein Ajax-Call zum Nachladen der WEBSALE Produktboxen genutzt wirdtrue/yes: Ajax-Call wird genutzt- Wenn nicht gesetzt, rendern die Web Components die Produktboxen
wrapper-class: Setzt die CSS-Klasse für den Wrapper-Container. Relevant beim direkten Rendern durch die Komponente (d.h. wennuse-ajax="no")item-class: Setzt die CSS-Klasse für die einzelnen Ergebnis-Items. Relevant beim direkten Rendern durch die Komponente (d.h. wennuse-ajax="no").
Placeholder-Template
Damit es beim Laden der Boxen nicht zu Höhenverschiebungen kommt, kann innerhalb von<ws-search-result> ein <template> mit dem Slot result-placeholder angegeben werden. Es wird für jedes Ergebnis als Platzhalter angezeigt, bis die Box vollständig geladen ist.
HTML-Ausgabe
Produkte (source="product"): Die Komponente erzeugt für jedes gefundene Produkt einen Container mit dem ID-Präfix wsProductWebComponent- und dem Attribut data-product-id. Über die ID kann per AJAX die WEBSALE-Produktbox nachgeladen werden.
source="category"): Für die Kategorieergebnisse wird analog das ID-Präfix wsCategoryWebComponent- sowie das Attribut data-category-id verwendet. Die ID wird in der Storefront vom AJAX-Script genutzt, um die WEBSALE-Kategoriebox nachzuladen.
Total-Container
Die Komponente<ws-search-result> übernimmt auch das Rendern von Total-Containern. Ein Total-Container zeigt Informationen zur Gesamtanzahl der Suchergebnisse sowie zur aktuellen Paginierung an.
Wichtig: Die CSS-Klasse total-container muss im class-Attribut enthalten sein, damit die Komponente den Container erkennt und rendert.
Beispiel
ws-search-result gerendert:
source: Der Index, dessen Total angezeigt werden soll. Mögliche Werte sindproduct,categoryundcontent.data-template: Ein String-Template, das zum Rendern des textContent verwendet wird. Enthält Platzhalter, die durch die tatsächlichen Werte ersetzt werden:{%result.total%}: Anzahl der Suchergebnisse insgesamt.{%result.from%}: Paginierung: Ab welchem Ergebnis angezeigt wird (z.B.1→ zeigt ab dem 1. Ergebnis an).{%result.to%}: Paginierung: Bis zu welchem Ergebnis angezeigt wird (z.B.24→ zeigt bis zum 24. Ergebnis an).
product, category, content) und das indexübergreifende Gesamt-Total angezeigt werden soll, muss der Total-Container ohne source-Attribut verwendet werden. Da diese Funktionalität aktuell noch nicht nativ in den Web Components enthalten ist, wird sie über ein Script im Template gelöst:
Diese Lösung ist nur nötig, wenn mehr als ein Index genutzt wird.
Debugging und Ausgabe in der Konsole
Um die Anzeige der Ergebnisse mit dem technischen Response zu überprüfen, können Sie das folgende Skript verwenden. Es gibt die Ergebnisse in der Browser-Konsole aus:Um die Felder unter
_source verfügbar zu machen, muss der WEBSALE-Support kontaktiert werden. Dieser schaltet die Felder in der Backend-Konfiguration frei.CSS & Styling
Die Komponente<ws-search-result> selbst erzeugt keine spezifischen CSS-Klassen. Das Styling wird vollständig über das <template>-Tag definiert. Sie können innerhalb dieses Templates beliebige CSS-Anweisungen verwenden, um die Darstellung der Suchergebnisse individuell anzupassen.