Liquid, JavaScript, Themes
Hallo,
wie kann ich ausschließend dass bestimmte Produkte über die Suchmaske gefunden werden?
Ich nutze die Search & Discovery App und finde dazu leider nichts.
Vielleicht zum Hintergrund: Ich möchte in meinem Shop ein Produkt anbieten das der Kunde selbst aus vielen anderen Produkten zusammenstellen kann. Diese "Options-Produkte" sollen aber nicht über die Suche gefunden werden können.
Ich hoffe ich konnte mein Problem verständlich machen.
Vielen Dank schonmal!
Gelöst! Zur Lösung
Erfolg.
Wir haben es jetzt über Metafelder in den Produkten gelöst.
Hey @Wilde_Möhre
Ich verstehe dein Problem. Du möchtest sicherstellen, dass bestimmte Produkte (in deinem Fall die "Options-Produkte") nicht über die Suchfunktion in deinem Shopify-Shop gefunden werden können. An erster Stelle, vielleicht hilft dir ein etwas verwandter Leitfaden zum Thema Customer Search Bar und wie man es einrichten kann hier.
Dann kannst du folgende Dinge ausprobieren, um dein Ziel zu erreichen:
Tags verwenden: Du könntest allen "Options-Produkten" einen speziellen Tag geben, z.B. "NichtSuchbar". Dies ermöglicht dir später, Produkte basierend auf diesem Tag zu filtern.
Suchfunktion anpassen: Nun musst du die Search & Discovery App oder die Suchfunktion von Shopify so anpassen, dass Produkte mit dem Tag "NichtSuchbar" nicht in den Suchergebnissen angezeigt werden.
Für die native Shopify-Suchfunktion müsstest du wahrscheinlich den Liquid-Code anpassen. Im search.liquid
-Template könntest du eine Bedingung hinzufügen, die Produkte mit dem Tag "NichtSuchbar" ausschließt.
Zum Beispiel mit einer einfachen FOR-Loop:
{% for product in search.results %}
{% unless product.tags contains 'NichtSuchbar' %}
... // Anzeige des Produkts
{% endunless %}
{% endfor %}
Wenn du die "Search & Discovery" App nutzt, kann die Vorgehensweise variieren. Manche Apps bieten Filteroptionen in den Einstellungen, mit denen du bestimmte Tags oder Produkte ausschließen kannst. Wenn das nicht der Fall ist, wende dich an den unseren Support, und die können einen näheren 👁️ in dein Shop werfen.
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Vielen Dank für die ausführliche Antwort! Ich werde das testen.
Gerne! 😉
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hat das funktioniert oder habt ihr eine Lösung dazu gefunden?
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Erfolg.
Wir haben es jetzt über Metafelder in den Produkten gelöst.
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hey, ich möchte auch einige Produkte bzw Kategorien ausschließen wie genau funktioniert das über die Metafelder ?
Dieses Problem würde ich gern nochmals aufgreifen: Im Dawn-Theme gibt es derzeit kein search.liquid. Wie lautet der derzeitige Code? Zudem an welcher Stelle muss am Beispiel des Dawn-Themes der FOR-Loop eingefügt werden, um berücksichtigt zu werden?
Hat sich erledigt.
In diesem Fall ist es main-search.liquid und der Code gehört in meinem Fall an Stelle 253-316:
<ul
class="grid product-grid grid--{{ section.settings.columns_mobile }}-col-tablet-down grid--{{ section.settings.columns_desktop }}-col-desktop"
role="list"
>
{% for product in search.results %}
{% unless product.tags contains 'NichtSuchbar' %}
<li
class="grid__item{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}"
{% if settings.animations_reveal_on_scroll %}
data-cascade
{% endif %}
>
{%- case product.object_type -%}
{%- when 'product' -%}
{%- capture product_settings -%}{%- if section.settings.product_show_vendor -%}vendor,{%- endif -%}title,price{%- endcapture -%}
{% render 'card-product',
card_product: product,
media_aspect_ratio: section.settings.image_ratio,
image_shape: section.settings.image_shape,
show_secondary_image: section.settings.show_secondary_image,
show_vendor: section.settings.show_vendor,
show_rating: section.settings.show_rating,
lazy_load: lazy_load
%}
{%- when 'article' -%}
{% render 'article-card',
article: product,
show_image: true,
show_date: section.settings.article_show_date,
show_author: section.settings.article_show_author,
show_badge: true,
media_aspect_ratio: 1,
lazy_load: lazy_load
%}
{%- when 'page' -%}
<div class="article-card-wrapper card-wrapper underline-links-hover">
<div
class="card card--card card--text ratio color-{{ settings.blog_card_color_scheme }}"
style="--ratio-percent: 100%;"
>
<div class="card__content">
<div class="card__information">
<h3 class="card__heading">
<a href="{{ product.url }}" class="full-unstyled-link">
{{ product.title | truncate: 50 | escape }}
</a>
</h3>
</div>
<div class="card__badge {{ settings.badge_position }}">
<span class="badge color-{{ settings.color_schemes | first }}">
{{- 'templates.search.page' | t -}}
</span>
</div>
</div>
</div>
</div>
{%- endcase -%}
</li>
{% endunless %}
{% endfor %}
</ul>
Hallo zusammen
Kribach hatte eine Lösung gepostet für das Dawn Theme. Hat jemand eine Idee wie das im Expanse Theme aussehen könnte wenn man sich zudem auf den Produkttyp (product_typ) bezieht statt auf den Produkt-Tag (product.tags)
Also Produkte aus den Suchergebissen ausschließt, die einen bestimmten Produkttyp haben?
Folgende unsere Liquid-Datei „main-search.liquid“:
{%- render 'section-main-search',
section: section,
search: search,
cart: cart,
context: 'search-page',
enable_sidebar: section.settings.enable_sidebar,
enable_color_swatches: section.settings.enable_color_swatches,
tags_combine: false,
enable_sort: section.settings.enable_sort,
collapse_filters: section.settings.collapse_filters,
paginate_by: 40,
grid_style: section.settings.grid_style,
quick_shop_enable: settings.quick_shop_enable,
quick_add_enable: settings.quick_add_enable,
product_grid_image_size: settings.product_grid_image_size,
product_grid_image_fill: settings.product_grid_image_fill,
product_hover_image: settings.product_hover_image,
enable_swatches: settings.enable_swatches,
vendor_enable: settings.vendor_enable,
product_save_amount: settings.product_save_amount,
product_save_type: settings.product_save_type,
enable_product_reviews: settings.enable_product_reviews
show_breadcrumbs: settings.show_breadcrumbs,
color_header_search: settings.color_header_search,
predictive_search_enabled: settings.predictive_search_enabled,
hydration: 'on:idle'
-%}
{% schema %}
{
"name": "t:labels.search_page",
"settings": [
{
"type": "header",
"content": "t:labels.filtering_and_sorting"
},
{
"type": "checkbox",
"id": "enable_sidebar",
"label": "t:actions.enable_filter",
"default": true,
"info": "t:info.allow_your_customers_to_filter"
},
{
"type": "checkbox",
"id": "collapse_filters",
"label": "t:actions.collapse_filters",
"default": true
},
{
"type": "checkbox",
"id": "enable_color_swatches",
"label": "t:actions.enable_color_swatches",
"info": "t:actions.view_setup_instructions"
},
{
"type": "checkbox",
"id": "enable_sort",
"label": "t:actions.show_sort_options",
"default": true
},
{
"type": "select",
"id": "grid_style",
"label": "t:labels.default_product_layout",
"default": "medium",
"options": [
{
"value": "large",
"label": "t:labels.sizes.large_grid"
},
{
"value": "medium",
"label": "t:labels.sizes.small_grid"
},
{
"value": "list",
"label": "t:labels.list"
}
]
}
]
}
{% endschema %}
Und hier section-search-results.liquid, worauf sich im main-search.liquid bezogen wird:
{% comment %}
/**
* {object} predictive_search - predictive search object
* {boolean} predictive_search_show_vendor - whether to show the vendor
* {boolean} predictive_search_show_price - whether to show the price
* {boolean} product_save_amount - whether to show the amount saved
* {string} product_save_type - product save type
* {object} routes - routes object
*/
{% endcomment %}
{% liquid
if predictive_search_show_price == nil
assign predictive_search_show_price = true
endif
if predictive_search_show_vendor == nil
assign predictive_search_show_vendor = true
endif
%}
{% liquid
assign resources = predictive_search.resources
assign columnCount = resources.queries.size | plus: resources.pages.size | plus: resources.articles.size | plus: resources.collections.size
assign totalCount = resources.queries.size | plus: resources.pages.size | plus: resources.articles.size | plus: resources.collections.size | plus: resources.products.size
%}
{%- if predictive_search.performed -%}
<div class="predictive-search-results {% if totalCount == 0 %}predictive-search-results--none{% endif %}" id="predictive-search-results">
{% if totalCount > 0 %}
<div class="results__group-1" {% if columnCount == 0 %}style="display: none"{% endif %}>
{%- if predictive_search.resources.queries.size > 0 -%}
<div class="results results--queries">
<h3 class="h4" id="predictive-search-suggestions">
{{ 'labels.suggestions' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-queries">
{%- for query in predictive_search.resources.queries -%}
<li role="option">
<a href="{{ query.url }}">
<span>{{ query.styled_text }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.pages.size > 0 -%}
<div class="results results--pages">
<h3 class="h4" id="predictive-search-pages">
{{ 'labels.pages' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-pages">
{%- for page in predictive_search.resources.pages -%}
<li role="option">
<a href="{{ page.url }}">
<span>{{ page.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.articles.size > 0 -%}
<div class="results results--articles">
<h3 class="h4" id="predictive-search-articles">
{{ 'labels.articles' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-articles">
{%- for article in predictive_search.resources.articles -%}
<li role="option">
<a href="{{ article.url }}">
<span>{{ article.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.collections.size > 0 -%}
<div class="results results--collections">
<h3 class="h4" id="predictive-search-collections">
{{ 'labels.collections' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-collections">
{%- for collection in predictive_search.resources.collections -%}
<li role="option">
<a href="{{ collection.url }}">
<span>{{ collection.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
</div>
<div class="results__group-2">
{%- if predictive_search.resources.products.size > 0 -%}
<div class="results results--products">
<h3 class="h4" id="predictive-search-products">
{{ 'labels.products' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-products">
{%- for product in predictive_search.resources.products -%}
<li role="option">
<a href="{{ product.url }}">
<div class="results-products__image grid__image-ratio">
{% if product.media != blank %}
{%- render 'image-element',
img: product.featured_media,
widths: '80, 160, 240',
-%}
{% endif %}
</div>
<div class="results-products__info">
<span>{{ product.title }}</span>
{% if predictive_search_show_vendor %}
<span class="grid-product__vendor">{{ product.vendor }}</span>
{% endif %}
{% if predictive_search_show_price %}
{%- if on_sale -%}
<span class="visually-hidden">{{ 'labels.regular_price' | t }}</span>
<span class="grid-product__price--original">{{ product.compare_at_price | money }}</span>
<span class="visually-hidden">{{ 'labels.sale_price' | t }}</span>
{%- endif -%}
{%- if product.price_varies -%}
{%- assign price = product.price_min | money -%}
<span class="grid-product__price">{{ 'labels.from_price_html' | t: price: price }}</span>
{%- else -%}
<span class="grid-product__price">{{ product.price | money }}</span>
{%- endif -%}
{%- if on_sale -%}
{%- if product_save_amount -%}
{%- liquid
if product_save_type == 'dollar'
assign saved_amount = product.compare_at_price | minus: product.price | money
else
assign saved_amount = product.compare_at_price | minus: product.price | times: 100.0 | divided_by: product.compare_at_price | round
endif
-%}
<span class="grid-product__price--savings">
{{ 'info.save_amount' | t: saved_amount: saved_amount }}
</span>
{%- endif -%}
{%- endif -%}
{% endif %}
</div>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.pages.size > 0 -%}
<div class="results results--pages">
<h3 class="h4" id="predictive-search-pages">
{{ 'labels.pages' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-pages">
{%- for page in predictive_search.resources.pages -%}
<li role="option">
<a href="{{ page.url }}">
<span>{{ page.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.articles.size > 0 -%}
<div class="results results--articles">
<h3 class="h4" id="predictive-search-articles">
{{ 'labels.articles' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-articles">
{%- for article in predictive_search.resources.articles -%}
<li role="option">
<a href="{{ article.url }}">
<span>{{ article.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
{%- if predictive_search.resources.collections.size > 0 -%}
<div class="results results--collections">
<h3 class="h4" id="predictive-search-collections">
{{ 'labels.collections' | t }}
</h3>
<ul role="listbox" aria-labelledby="predictive-search-collections">
{%- for collection in predictive_search.resources.collections -%}
<li role="option">
<a href="{{ collection.url }}">
<span>{{ collection.title }}</span>
</a>
</li>
{%- endfor -%}
</ul>
</div>
{%- endif -%}
</div>
{% else %}
<div class="results"><a class="predictive-search__no-results" href="{{ routes.search_url }}?q={{ predictive_search.terms | escape }}">{{ 'info.search_no_results_html' | t: terms: predictive_search.terms }}</a></div>
{% endif %}
</div>
{% if totalCount > 0 %}
<button class="results__search-btn">
{{ 'actions.show_all_results' | t: terms: predictive_search.terms }} <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 5H12.5M12.5 5L8.5 1M12.5 5L8.5 9" stroke="currentColor"/></svg>
</button>
{% endif %}
{%- endif -%}
Ich würde mich über jeglichen Vorschlag freuen an welcher Stelle ich hier Anpassungen vornehmen soll.
Vielen lieben Dank
Hallo @Gabe,
bin eben auf deine Antwort hier gestoßen. Ich würde das gerne ausprobieren, wo genau muss ich im search.liquid den Code einfügen? Wir nutzen die Search & Discovery App. Meinst du das main.search.liquid? Anbei ein Screenshot. Und an welcher Stelle kommt der Code hin, sorry bin da etwas unerfahren 😄
LG
Teil 2 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 16, 2024Teil 1 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 9, 2024Anpassungen des benutzerdefinierten Codes an Shopify-Themes (CSS) leicht gemachtIn diesem...
By Gabe Aug 28, 2024