Lightspeed: Search
Lightspeed
Search
In KI verwenden In ChatGPT öffnen
Fragen zu dieser Seite stellen
In Claude öffnen
Fragen zu dieser Seite stellen
In Perplexity öffnen
Fragen zu dieser Seite stellen
Seite kopieren
Seite als Markdown für LLMs kopieren
Als Markdown anzeigen
Diese Seite als Klartext sehen Fügen Sie Ihrer Lightspeed-Webshop eine leistungsstarke Suchfunktion hinzu.
Clerk.io bietet drei verschiedene Suchlösungen, die zusammen oder separat verwendet werden können:
Dieser Artikel erklärt, wie du mit Search auf Lightspeed loslegst.
Allgemein
# Um deinen Embed-Code für entweder Live Search oder Search Page einzubinden, musst du auf deine Theme-Dateien zugreifen. Klicke dazu im Menü auf der linken Seite auf „Design“ und dann im Dropdown „Geavanceerd“ auf „Code bewerken“.
Um Synchronisierungsdetails hinzuzufügen oder eine Synchronisierung zu starten, gehe zu my.clerk.io > Data > Configuration .
Instant Search
# Instant Search liefert in Echtzeit Suchergebnisse, während Kunden tippen, die in einem Dropdown unter dem Suchfeld angezeigt werden.
Design erstellen
# Du kannst entweder den
Design Editor verwenden, um ihn visuell zu konfigurieren, oder
Code Designs nutzen.
Design Editor
# Gehe zu Search > Designs und klicke auf New Design. Wähle Other designs > Instant Search. Wähle aus der Liste der Designvorlagen das gewünschte Template aus. Gib ihm einen Namen und klicke auf Create design. Nimm die gewünschten Änderungen am Design vor. Code Design
# Gehe zu Search > Designs und klicke auf New Design. Wähle Other designs > Blank > With code. Gib ihm einen Namen und klicke auf Save. Erstelle ein Code Design von Grund auf mit
Liquid code . Wenn du ein Startdesign möchtest, sieh dir weiter unten das
Instant Search template an.
Element erstellen
# Dies beinhaltet alle Einstellungen, die verwendet werden, um das Instant Search Dropdown anzuzeigen und es auf deiner Website einbettbar zu machen.
Gehe zu Search > Elements. Klicke auf New Element. Gib ihm den Namen “Live Search”. Wähle bei Element type aus dem Dropdown Live-search . Wähle bei Design aus dem Dropdown das zuvor erstellte Design aus. Klicke oben auf dem Bildschirm auf Save . Zur Website hinzufügen
# Füge in deiner Hauptlayout-Datei (wahrscheinlich fixed.rain oder custom.rain ) den Live Search Embed-Code direkt vor dem schließenden
-Tag ein.
Aktualisiere den Platzhalter in „data-instant-search“, um die in deinem Webshop verwendete Abfrageklasse oder ID anzugeben (in diesem Beispiel „#searchInput“). <span
class = "clerk"
data-template = "@live-search"
data-instant-search-suggestions = "6"
data-instant-search-categories = "6"
data-instant-search-pages = "6"
data-instant-search = "#searchInput"
data-instant-search-positioning = "left" >
</span >
Search Page
# Die Search Page bietet eine Sucherfahrung über eine ganze Seite mit erweiterten Filtermöglichkeiten. Sie wird verwendet, um alle Treffer zu einer Suchanfrage eines Kunden anzuzeigen.
Design erstellen
# Du kannst entweder den
Design Editor verwenden, um ihn visuell zu konfigurieren, oder
Code Designs nutzen.
Design Editor
# Gehe zu Search > Designs und klicke auf New Design. Wähle Other designs > Search Page. Wähle aus der Liste der Designvorlagen das gewünschte Template aus. Gib ihm einen Namen und klicke auf Create design. Nimm die gewünschten Änderungen am Design vor. Code Design
# Gehe zu Search > Designs und klicke auf New Design. Wähle Other designs > Blank > With code. Gib ihm einen Namen und klicke auf Save. Erstelle ein Code Design von Grund auf mit
Liquid code . Wenn du ein Startdesign möchtest, sieh dir weiter unten das
Search Page template an.
Element erstellen
# Dies beinhaltet alle Einstellungen, die verwendet werden, um die Search Page anzuzeigen und sie in deine bestehende Suchseite einbettbar zu machen.
Gehe zu Search > Elements. Klicke auf New Element. Gib ihm den Namen “Search Page”. Wähle bei Element type aus dem Dropdown Search page . Wähle bei Design das zuvor erstellte Design aus. Klicke oben auf dem Bildschirm auf Save . Zur Website hinzufügen
# In Lightspeed befindet sich die Search Page in der Datei Categories (collection.rain ).
Nachdem du dein Search Page-Element und Design in my.clerk.io erstellt hast, füge den Embed-Code für die Search Page an der gewünschten Stelle im collection.rain-Code ein, an der die Seite erscheinen soll.
Stelle sicher, dass du data-query so aktualisierst, dass die Suchabfrage korrekt referenziert wird; in Lightspeed ist dies {{page.search}}.
Füge eine „if“-Anweisung ein, um die Suchseite korrekt zu referenzieren, und greife auf den Kategorien-Code zurück, wenn es keine Suchseite ist: {% if page.search %}
<div class = "page-width clerk-page-width" >
<span
id = "clerk-search"
class = "clerk"
data-template = "@search-page"
data-target = "#clerk-search-results"
data-query = "{{ page.search }}"
data-facets-attributes = '["price","categories","vendor"]'
data-facets-titles = '{"price":"Price","categories":"Categories","vendor":"Brand"}'
data-facets-target = "#clerk-search-filters"
data-facets-price-prepend = "€"
data-facets-in-url = "false"
data-facets-view-more-text = "View More"
data-facets-searchbox-text = "Search for " >
</span >
<div id = "clerk-show-facets" onclick = "toggleFacets()" >Filters</div >
<div class = "clerk_flex_wrap" >
<div id = "clerk-facets-container" >
<div id = "clerk-search-filters" ></div >
</div >
<div id = "clerk-search-results" ></div >
</div >
<script >
function toggleFacets (){
el = document.getElementById ('clerk-facets-container' );
el .classList .toggle ('active' );
}
</script >
<style >
#clerk-show-facets { width : 70 % ; height : 40 px ; margin : 20 px auto ; background-color : #333 ; color : white ; text-align : center ; border-radius : 2 px ; line-height : 40 px ; cursor : pointer ; }
.clerk-page-width { display : flow - root; }
#clerk-search-results { width : 80 % ; }
#clerk-show-facets { display : none ; }
.clerk_flex_wrap { display : flex ; flex-direction : row ; }
.active { display : block !important ; }
@media only screen and ( max-width : 800px ) {
#clerk-search-filters { width : 100 % !important ; }
#clerk-facets-container { display : none ; }
#clerk-show-facets { display : block ; }
.clerk_flex_wrap { flex-direction : column ; }
#clerk-search-results { display : block ; width : 100 % ; }
}
</style >
</div >
{% else %}
<!--CATEGORY_CODE_HERE-->
{% endif %}
Wenn du ein Snippet für deine Suchseite eingerichtet hast (so etwas wie snippets/search.rain ), kommentiere das gesamte Snippet aus, damit diese Suchseite nicht in deinem Webshop erscheint.
Stelle außerdem sicher, dass dein Kategorien-Code an der Stelle eingefügt ist, wo im obigen Beispiel CATEGORY_CODE_HERE steht.
Omnisearch
# Der Omnisearch kombiniert Instant Search und Search Page in einem einzigen Overlay, das geöffnet wird, wenn der Nutzer das Suchfeld fokussiert.
Design erstellen
# Omnisearch verwendet ein Code Design.
Gehe zu Search > Designs und klicke auf New Design. Wähle Omni-search. Wähle ein Template aus, vergib einen Namen und klicke auf Save. Passe das Design nach Bedarf an. Details findest du im
Omnisearch guide . Element erstellen
# Gehe zu Search > Elements. Klicke auf New Element. Gib ihm den Namen “Omni-Search”. Wähle unter Element type Omni-search . Wähle bei Design dein Omnisearch Design aus. Klicke auf Save . Zur Website hinzufügen
# Du kannst Omnisearch entweder per
Injection oder mit
embedded code einbinden.
Wenn du Embedded Code verwendest, setze mit data-trigger-element einen CSS-Selektor für das Suchfeld.
Beispiel-Embed-Code:
<span class = "clerk"
data-template = "@omni-search"
data-api = "search/omni"
data-trigger-element = "#search" >
</span >
Start-Templates
# Wenn du Code Designs verwenden möchtest, können dir diese Templates den Einstieg erleichtern. Sie enthalten die grundlegenden UI-Elemente, die das Instant Search und die Search Page ausmachen, und können anschließend nach deinen Bedürfnissen angepasst werden.
Instant Search Code
# Dies enthält die HTML- und CSS-Komponenten zur Darstellung eines Instant Search Dropdowns. Füge sie in ein Code Design in my.clerk.io ein.
HTML
# <div class = "clerk-instant-search" >
{% if hits.length == 0 %}
<div class = "clerk-instant-search-no-results" >
Nothing matched: <b >{{ query }}</b >... try a simpler search!
</div >
{% endif %}
{% if content.query != response.query %}
<div class = "clerk-instant-search-alternate-query" >
<i class = "fas fa-search clerk-icon" aria-hidden = "true" ></i > Showing results for: <b >{{ query }}</b >
</div >
{% endif %}
<div class = "clerk-instant-search-grid" >
{% if products.length > 0 %}
<div class = "clerk-instant-search-col clerk-col-1" >
<div class = "clerk-instant-search-products" >
<div class = "clerk-instant-search-title" >Products</div >
{% for product in products %}
<a href = "{{ product.url }}" >
<div class = "clerk-instant-search-product clerk-instant-search-key-selectable" >
<div class = "clerk-instant-search-product-image" style = "background-image: url('{{ product.image }}');" ></div >
<div >
<div class = "clerk-instant-search-product-name" >{{ product.name | highlight query }}</div >
{% if product.price < product.list_price %}
< div class = "clerk-instant-search-product-list-price" >{{ product.list_price | money }}</div >
{% endif %}
<div class = "clerk-instant-search-product-price" >{{ product.price | money }}</div >
</div >
<div >
<div class = "clerk-instant-search-product-button" >Buy Now</div >
</div >
</div >
</a >
{% endfor %}
{% if hits > products.length %}
<div class = "clerk-desktop-button clerk-instant-search-more-results clerk-instant-search-key-selectable" >
<a class = "clerk-view-more-results-button" href = "/search?q={{ query }}" >
<u >See <b >{{ hits }}</b > more results for "<i >{{ query }}</i >"</u >
</a >
</div >
{% endif %}
</div >
</div >
{% endif %}
{% if (suggestions.length + categories.length + pages.length) > 0 %}
<div class = "clerk-instant-search-col clerk-col-2" >
{% if suggestions.length > 1 %}
<div class = "clerk-instant-search-suggestions" >
<div class = "clerk-instant-search-title" >Search Suggestions</div >
{% for suggestion in suggestions %}
{% if suggestion != query %}
<div class = "clerk-instant-search-suggestion clerk-instant-search-key-selectable" >
<a href = "/search?q={{ suggestion highlight query 'bold' true }}" >
<i class = "fas fa-search clerk-icon" aria-hidden = "true" ></i >{{ suggestion }}
</a >
</div >
{% endif %}
{% endfor %}
</div >
{% endif %}
{% if categories.length > 0 %}
<div class = "clerk-instant-search-categories" >
<div class = "clerk-instant-search-title" >Categories</div >
{% for category in categories %}
<div class = "clerk-instant-search-category clerk-instant-search-key-selectable" >
<a href = "{{ category.url }}" >
{{ category.name | highlight query }}
</a >
</div >
{% endfor %}
</div >
{% endif %}
{% if pages.length > 0 %}
<div class = "clerk-instant-search-pages" >
<div class = "clerk-instant-search-title" >Related Content</div >
{% for page in pages %}
<div class = "clerk-instant-search-category clerk-instant-search-key-selectable" >
<a href = "{{ page.url }}" >
<div class = "name" >{{ page.title | highlight query 'bold' true }}</div >
</a >
</div >
{% endfor %}
</div >
{% endif %}
</div >
{% endif %}
{% if hits > products.length %}
<div class = "clerk-mobile-button clerk-instant-search-more-results clerk-instant-search-key-selectable" >
<a href = "/search?q={{ query }}" >
See <b >{{ hits }}</b > more results for "<i >{{ query }}</i >"
</a >
</div >
{% endif %}
</div >
</div >
CSS
# .clerk-instant-search { padding : 20 px ; }
.clerk-instant-search-container a { color : black !important ; text-decoration : none !important ; }
.clerk-instant-search-container a :hover { color : #b6c254 !important ; }
.clerk-instant-search { overflow : hidden ; width : 100 % ; min-width : 650 px ; max-width : 1000 px ; margin : .2 em auto ; background-color : white ; border : 1 px solid #eee ; border-top : 0 px ; border-radius : 5 px 5 px 10 px 10 px ; box-shadow : 0 1 em 2 em 1 em rgba(0 ,0 ,0 ,.2 ); }
.clerk-instant-search-no-results { padding : 1 em ; font-style : italic ; text-align : center ; }
.clerk-instant-search-alternate-query { margin : 0 0 5 px 0 ; }
.clerk-instant-search-more-results { padding : 1 em ; font-size : 1.2 em ; text-align : center ; }
.clerk-instant-search-title { color : #b6c254 ; margin : 20 px 0 5 px ; padding : 0 0 10 px ; text-transform : uppercase ; font-size : 1 em ; border-bottom : 1 px solid #000 ; }
.clerk-instant-search-products { padding-right : 2 em ; }
.clerk-instant-search-product { display : flex ; padding : .2 em ; color : gray ; }
.clerk-instant-search-product :hover { background-color : rgba(46 , 204 , 113 , .1 ); }
.clerk-instant-search-product :hover .clerk-instant-search-product-button { transform : scale(1.05 ); }
.clerk-instant-search-product > * { flex : 1 1 auto ; }
.clerk-instant-search-product > * :first-child , .clerk-instant-search-product > * :last-child { flex : 0 0 auto ; }
.clerk-instant-search-product-image { display : inline-block ; width : 3 em ; height : 3 em ; margin-right : 1 em ; background-position : center center ; background-repeat : no-repeat ; background-size : contain ; }
.clerk-instant-search-product-name { overflow : hidden ; height : 1.2 em ; margin-bottom : .2 em ; }
.clerk-instant-search-product-list-price { display : inline-block ; margin-right : .5 em ; opacity : .8 ; font-weight : normal ; text-decoration : line-through ; color : gray ; }
.clerk-instant-search-product-price { display : inline-block ; font-weight : bold ; }
.clerk-icon { color : lightgray ; margin-right : .5 em ; }
.clerk-instant-search-suggestions { margin-bottom : 1 em ; }
.clerk-instant-search-suggestion { padding : .1 em ; }
.clerk-instant-search-categories { margin-bottom : 1 em ; }
.clerk-instant-search-category { padding : 5 px ; margin : 5 px ; width : auto ; display : inline-block ; border : 1 px solid black ; border-radius : 2 px ; }
.clerk-instant-search-pages { margin-bottom : 1 em ; }
.clerk-instant-search-page { padding : .1 em ; }
@media screen and ( min-width : 1200px ) { .clerk-instant-search-container { width : 50 % ; } .clerk-instant-search-grid { display : flex ; } .clerk-col-1 { flex : 2 ; } .clerk-col-2 { flex : 1 ; } .clerk-mobile-button { display : none ; } }
@media screen and ( min-width : 768px ) and ( max-width : 1200px ) { .clerk-instant-search-container { right : 0 !important ; left : 0 !important ; } .clerk-mobile-button { display : none ; } }
@media screen and ( max-width : 767px ) { .clerk-instant-search-container { right : 0 !important ; } .clerk-desktop-button { display : none ; } }
@media screen and ( min-width : 376px ) and ( max-width : 800px ) { .clerk-instant-search { min-width : 0 !important ; } }
@media screen and ( max-width : 375px ) { .clerk-instant-search { min-width : 200 px !important ; } .clerk-instant-search-col { margin : 0 0 20 px 0 ; } .clerk-instant-search-product-name { height : 3 em !important ; } }
Search Page Code
# Dies enthält die HTML- und CSS-Komponenten zum Anzeigen einer Search Page. Füge sie in ein Code Design in my.clerk.io ein.
HTML
# <div class = "clerk-search-result" >
<div class = "clerk-search-result-headline" >{{ headline }}</div >
<div class = "clerk-grid" >
{% for product in products %}
<div class = "clerk-grid-item" >
<div class = "clerk-grid-product" >
<a href = "{{ product.url }}" >
{% if product.price < product.list_price %}
< div class = "clerk-grid-badge" >On Sale</div >
{% endif %}
<div class = "clerk-grid-image" style = "background-image: url('{{ product.image }}');" ></div >
<div class = "clerk-grid-brand" >{{ product.brand }}</div >
<div class = "clerk-grid-name" >{{ product.name }}</div >
<div class = "clerk-grid-pricing" >
{% if product.price < product.retail_price %}
< div class = "clerk-grid-list-price" >£{{ product.retail_price | money }}</div >
{% endif %}
<div class = "clerk-grid-price" >£{{ product.price | money }}</div >
</div >
</a >
{% if product.stock == 1 %}
<a class = "clerk-not-in-stock" href = "{{ product.url }}" data-event-type = "product-click" >
<div class = "clerk-grid-button-not-in-stock" >Out of Stock</div >
</a >
{% else %}
<a class = "clerk-add-to-cart" href = "/cart.php?action=add&product_id={{ product.id }}" data-event-type = "product-click" >
<div class = "clerk-grid-button" >Add to Cart</div >
</a >
{% endif %}
</div >
</div >
{% endfor %}
</div >
{% if count > products.length %}
<div class = "clerk-load-more-button" onclick = "Clerk('content', '#{{ content.id }}', 'more', 40);" >Show More Results</div >
{% endif %}
</div >
CSS
# #clerk-search-results { margin : 0 ; }
.clerk-search-result { margin : 1 em 0 ; }
.clerk-search-result-headline { font-weight : bold ; font-size : 2 em ; text-align : center ; }
.clerk-grid { display : flex ; flex-flow : row wrap ; }
.clerk-grid-item { margin : auto ; }
.clerk-grid-product { position : relative ; overflow : hidden ; margin : 1 em ; padding : 1 em ; background-color : white ; border : 1 px solid #eee ; border-radius : 1 em ; box-shadow : 0 .1 em .2 em 0 rgba(0 ,0 ,0 ,.08 ); text-align : center ; }
.clerk-grid-badge { position : absolute ; top : 5 px ; right : -35 px ; display : inline-block ; width : 120 px ; margin : 10 px auto ; padding : 5 px 0 ; border-radius : 3 px ; background-color : #fbc531 ; font-size : 10 px ; color : white ; text-align : center ; letter-spacing : 1 px ; transform : rotate(45 deg ); }
.clerk-grid-tags { position : absolute ; top : .8 em ; left : .8 em ; }
.clerk-grid-tag { display : inline-block ; padding : .2 em .8 em ; border-radius : .3 em ; background-color : gray ; font-size : 10 px ; color : white ; letter-spacing : 1 px ; }
.clerk-grid-image { width : 100 % ; height : 8 em ; margin-bottom : 1 em ; background-position : center center ; background-repeat : no-repeat ; background-size : contain ; }
.clerk-grid-brand { font-size : 0.9 em ; color : #757575 ; }
.clerk-grid-name { height : 3 em ; overflow : hidden ; color : #4a3b40 ; font-weight :bold ; font-size : 15 px ; margin-bottom : 1 em ; }
.clerk-grid-pricing { display : flex ; margin-bottom : 1 em ; }
.clerk-grid-price { flex : 1 ; color : #757575 ; font-weight : bold ; }
.clerk-grid-list-price { flex : 1 ; opacity : .8 ; font-weight : normal ; text-decoration : line-through ; color : gray ; }
.clerk-add-to-cart , .clerk-add-to-cart :hover { color : white ; }
.clerk-not-in-stock , .clerk-not-in-stock :hover { color : #4a3b40 ; }
.clerk-grid-button-not-in-stock { display : block ; margin : 0 auto ; padding : .6 em 2 em ; border : none ; border-radius : .5 em ; background-color : white ; color : #4a3b40 ; text-transform : uppercase ; text-align : center ; white-space : nowrap ; font-weight : bold ; cursor : pointer ; }
.clerk-grid-button { display : block ; margin : 0 auto ; padding : .6 em 2 em ; border : none ; border-radius : .5 em ; background-color : #b6c254 ; color : white ; text-transform : uppercase ; text-align : center ; white-space : nowrap ; font-weight : bold ; cursor : pointer ; }
.clerk-load-more-button { display : block ; width : 20 em ; margin : 1 em auto ; padding : .6 em 2 em ; border : none ; border-radius : .5 em ; background-color : #b6c254 ; color : white ; text-transform : uppercase ; text-align : center ; white-space : nowrap ; font-weight : bold ; font-size : 1.2 em ; cursor : pointer ; }
@media screen and ( min-width : 1025px ) { .clerk-grid-item { flex : 0 0 25 % ; margin : auto ; } }
@media screen and ( min-width : 500px ) and ( max-width : 1024px ) { .clerk-grid-item { flex : 0 0 33 % ; margin : auto ; } }
@media screen and ( max-width : 499px ) { .clerk-grid-item { flex : 0 0 100 % ; margin : auto ; } }
Diese Seite wurde von einer hilfreichen KI übersetzt, daher kann es zu Sprachfehlern kommen. Vielen Dank für Ihr Verständnis.