Globale Einbindung auf allen Templates
In den meisten Fällen wird das Sucheingabefeld (ws-search-box) im Header des Shops integriert, sodass die Suche von jeder Seite aus erreichbar ist.
Damit die Suche auf allen Seiten funktioniert, müssen bestimmte Komponenten und Skripte in allen Templates eingebunden werden, auf denen das Sucheingabefeld angezeigt wird. Diese sorgen für die Kommunikation mit dem Such-Backend und die Verarbeitung der Suchanfragen.
Falls die Komponenten und Skripte nicht direkt in jedem Template eingebunden werden sollen, kann ein Include-Bereich in der FastInclude-Datei (incl_fast_includes.htm) erstellt und dann in den benötigten Templates referenziert werden.
Im Folgenden werden die erforderlichen Komponenten und Skripte beschrieben.
WEBSALE JavaScript-Bibliothek
Für die Integration wird die WEBSALE JavaScript-Bibliothek benötigt. Diese stellt alle relevanten JavaScript-Module für das Such-Modul sowie weitere Standard-Shop-Funktionen bereit. Je nach Anforderungen können zwei Varianten der Bibliothek eingebunden werden:ws-system-<Versionskennung>.js- WEBSALE JavaScript-Module inklusive der jQuery-Bibliothek.ws-core-<Versionskennung>.js- WEBSALE JavaScript-Module ohne jQuery. In diesem Fall muss jQuery separat eingebunden werden.
Die WEBSALE JavaScript-Bibliothek wird nur einmal pro Template benötigt. Falls sie bereits in den Templates für andere Shop-Funktionen eingebunden ist, ist keine erneute Integration erforderlich.
JavaScript-Bundle
WEBSALE stellt ein JavaScript-Bundle mit dem Namenws-search-component-<Versionskennung>.js über die WEBSALE JavaScript-Bibliothek bereit. Dieses Bundle wird auch über das WEBSALE PageSpeed-Tool verwaltet und ist für die Integration und Funktionalität der Suchkomponente erforderlich.
Sie können das Bundle direkt in Ihre Templates einbinden, wie alle anderen von WEBSALE bereitgestellten JavaScript-Komponenten, indem Sie es über das PageSpeed-Tool konfigurieren.
Falls Sie das Bundle individualisieren oder anpassen möchten, steht Ihnen die Datei zum Download unter folgender URL zur Verfügung:
Kommunikationskomponente
Die Kommunikationskomponente wird überall benötigt, wo das Sucheingabefeld (ws-search-box) verwendet wird, jedoch nur einmal pro Seite. Sie stellt sicher, dass Suchanfragen korrekt verarbeitet und an das Backend übermittelt werden.
Sucheingabefeld mit optionaler Suggestfunktion
Das Sucheingabefeld wird über die<ws-search-box> Komponente eingebunden. Diese Komponente bildet das Frontend-Eingabefeld ab und kann optional mit einer Suggestfunktion ergänzt werden.
Zusätzlich kann ein Button zur Absendung der Suchanfrage über die <ws-search-button> Komponente integriert werden.
Such-Event-Dispatcher & Weiterleitung von Suchanfragen
Das folgende Skript ist erforderlich, um Suchanfragen korrekt zu verarbeiten, Suchergebnisse global im Shop bereitzustellen und neue Suchanfragen auf die Suchergebnisseite weiterzuleiten. Es sollte im<head> des Templates eingebunden werden.
- Verarbeitung der Suchergebnisse (
wsResultDispatcher.subscribe)- Überwacht die JSON-Antwort des Such-Moduls und gibt die erhaltenen Daten in der Konsole aus.
- Erstellt eine Liste der Produktnummern und bereitet sie für eine AJAX-Anfrage zum Laden der Produktboxen vor.
- Wenn Suchergebnisse vorliegen, wird
ws_AJAXloadTemplatePOST()ausgeführt, um die Produktboxen nachzuladen.
- AJAX-Methoden für den Produktbox-Request
- Stellt leere Funktionen für die AJAX-Events
start,success,errorundfailurebereit. - Diese können bei Bedarf mit eigenen Funktionen überschrieben oder erweitert werden.
- Stellt leere Funktionen für die AJAX-Events
- Event-Listener für neue Suchanfragen (
wsPerformSearchEvent)- Sorgt dafür, dass Suchanfragen auf die Suchergebnisseite weitergeleitet werden.
- Sobald eine neue Suchanfrage gestartet wird, wird die URL entsprechend angepasst und der Benutzer wird auf die Ergebnisseite weitergeleitet.
- Extrahiert Suchparameter aus der URL (
DOMContentLoadedEvent)- Lädt beim Seitenaufbau die aktuellen Suchparameter aus der URL.
- Bereitet die Parameter für weitere Funktionen oder Filtermechanismen vor.
Integration auf der Suchergebnisseite (ws_search.htm)
Das Standard-Template für die Anzeige der Suchergebnisseite ist ws_search.htm.
Verwendung der Komponente ws-search-result
Die Komponente<ws-search-result> liefert die Produktliste basierend auf dem eingegebenen Suchbegriff, den gewählten Filtern und Sortieroptionen.
Template-Platzhalter für die Produktbox
Damit es nicht zu Höhenverschiebungen beim Laden der Produktboxen kommt, kann innerhalb vonws-search-result ein <template> angegeben werden. Dieses wird angezeigt, sobald die Produktbox geladen wird.
Um das Template für die Platzhalter zu definieren, muss beim slot result-placeholder angegeben werden:
Template für die WEBSALE Produktbox (incl_productbox.htm)
Um die Produktbox nachzuladen, muss ein zusätzliches Template erstellt und im Template-Verzeichnis des Shops gespeichert werden (Standard: translation- Templateverzeichnis).
Falls sich der Name des Templates von incl_productbox.htm unterscheidet, muss das zugehörige JavaScript-Skript (siehe Abschnitt Such-Event-Dispatcher & Weiterleitung von Suchanfragen) entsprechend angepasst werden.
~WS-Fast_Include(Incl-ProductBoxCategory)~: Dies ist der Include-Bereich, der die vollständige Produktbox mit allen Shop-Funktionen lädt.
Incl-ProductBoxCategory stammt üblicherweise aus der Datei incl_fast_includes.htm, kann aber je nach Shop anders lauten. Achten Sie darauf, den korrekten Include-Namen einzutragen. Innerhalb der Productbox sollte die Klasse wsProductBox-XX (XX mit Produktnummer ersetzen) vorhanden sein, damit diese Produkte, sofern vorhanden, bei einer Sortierung oder Filterung nicht erneut geladen werden.Filterung der Suchergebnisse
Bevor Filter im Frontend verfügbar sind, müssen die Produktdatenfelder, die für eine Filterung verwendet werden können, in der Konfiguration des Such-Moduls definiert werden. Diese Konfiguration legt fest, welche Filterarten (z. B. Checkboxen, Slider) für bestimmte Felder genutzt werden können. Beispiel für die Integration der Filter-Komponenten:Sortierung der Suchergebnisse
Die Sortierung wird über die Komponente<ws-sort-box> gesteuert:
