<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 beziehungsweise jede gefundene Kategorie eine Referenz aus.
Komponente
Ergebnisse werden pro Index gruppiert. Für jeden Index wird eine eigene<ws-search-result>-Instanz verwendet, beispielsweise für product und category. Diese Instanzen können frei im Layout platziert werden.
source: Gibt den Quellindex an, dessen Ergebnisse diese Instanz darstellt. Wird keinsourcegesetzt, verhält sich die Komponente wie bisher. Mögliche Werte:productcategorytab: Nur innerhalb von ws-search-result-tabs relevant. Bündelt mehrerews-search-result-Instanzen in einem gemeinsamen Tab. Ohnetabbildet diesourceden Tab.content: Alle Content-Ergebnisse. Sind mehrere Content-Quellen konfiguriert, werden deren Ergebnisse zusammengefasst dargestellt.content_<name>: Nur die Ergebnisse einer einzelnen Content-Quelle, beispielsweisecontent_blog. Siehe Abschnitt Mehrere Content-Quellen.
use-ajax: Gibt an, ob ein Ajax-Call zum Nachladen der WEBSALE Produktboxen genutzt wird.true/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, also wennuse-ajax="no"gesetzt ist.item-class: Setzt die CSS-Klasse für die einzelnen Ergebnis-Items. Relevant beim direkten Rendern durch die Komponente, also wennuse-ajax="no"gesetzt ist.
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.
Mehrere Content-Quellen
Die getrennte Darstellung einzelner Content-Quellen setzt websale_search_webcomponents v1.7.0 voraus. Im Backend werden zusätzlich elasticsearch_manager v1.15.0 und websale_search v1.18.0 benötigt.
source-Attribut, ob eine Instanz alle Quellen zusammenfasst oder nur eine einzelne Quelle darstellt. Der Name nach dem Unterstrich entspricht dem name der Quelle aus der Konfiguration des Importmoduls.
content pro Quelle verschachtelt sind. Eine Umstellung im Template ist nur dann nötig, wenn Sie einzelne Quellen getrennt ausgeben möchten.
Die bisherige Nutzung mit
source="content" bei einer einzelnen Content-Konfiguration funktioniert unverändert weiter.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,category,contentsowiecontent_<name>bei mehreren Content-Quellen.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. Der Wert1zeigt beispielsweise ab dem 1. Ergebnis an.{%result.to%}: Paginierung, bis zu welchem Ergebnis angezeigt wird. Der Wert24zeigt beispielsweise bis zum 24. Ergebnis an.
product, category und content, und das indexübergreifende Gesamt-Total angezeigt werden soll, verwenden Sie ws-search-info ohne source-Attribut.
Ab
ws-search-component-1.9.1.js übernimmt die Komponente ws-search-info die Trefferanzeige, inklusive des indexübergreifenden Gesamt-Totals, das bisher ein Script im Template erforderte. Die hier beschriebene Vorgehensweise ist weiterhin nutzbar, sollte in neuen Projekten aber nicht mehr verwendet werden.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:content. Jede Quelle bildet dort einen eigenen Block mit results und sub_total. Die Gesamttrefferzahl total summiert weiterhin über alle Indizes.
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.