修改Shopify搜索-显示产品变体,正确分页

修改Shopify搜索-显示产品变体,正确分页,shopify,liquid,shopify-template,liquid-layout,Shopify,Liquid,Shopify Template,Liquid Layout,我正试图找到一种方法来解决以下问题: 我正在修改一个liquid模板,以便在搜索结果页面上包含找到的产品变体。但是,当我这样做时,搜索结果上可见产品/产品变体的数量变化很大,并导致糟糕的用户体验 我们有28个项目的分页中断。但这只是考虑到它已经展示的产品数量。正如我现在展示的产品变体一样,页面上有大量的项目。如果我将分页限制降低到(比方说4),我最终得到的页面正好有4个条目,而页面有500个条目,这取决于给定搜索词的匹配变化 这是总体目标: 在搜索结果页以及默认产品中显示产品变体,并且仍然具有正

我正试图找到一种方法来解决以下问题: 我正在修改一个liquid模板,以便在搜索结果页面上包含找到的产品变体。但是,当我这样做时,搜索结果上可见产品/产品变体的数量变化很大,并导致糟糕的用户体验

我们有28个项目的分页中断。但这只是考虑到它已经展示的产品数量。正如我现在展示的产品变体一样,页面上有大量的项目。如果我将分页限制降低到(比方说4),我最终得到的页面正好有4个条目,而页面有500个条目,这取决于给定搜索词的匹配变化

这是总体目标: 在搜索结果页以及默认产品中显示产品变体,并且仍然具有正确的分页,每页显示固定数量的产品/变体/搜索结果项

我的方法是:

{% capture total_results %}
    {%- for result in search.results -%}
        {%- case result.object_type -%}
            {%- when 'product' -%}
                // Go over all the variants and match to the search terms
                // Include product-grid-item template in case it matches
            {%- when 'article' -%}
            {%- when 'page' -%}
        {%- endcase -%}
        <!-- Divider: #### -->
    {%- endfor -%}
{% endcapture %}

{% comment %}Break the captured string at the divider string into an array{% endcomment %}
{%- assign total_results = total_resuls | split: "<!-- Divider: #### -->" -%}

<div class="page__description page__description--centered">
    <span>{{ 'search.general.results_count' | t: count: total_results.size, terms: search_terms }}</span>
</div>

{% paginate total_result by 28 %}
    {% for result in total_resuls %}
        {{ result }}
    {% endfor %}
{% endpaginate %}
{%capture total_results%}
{%-用于搜索中的结果。结果-%}
{%-case result.object_type-%}
{%-when'product'-%}
//检查所有变体并与搜索词匹配
//包括产品网格项模板,以防其匹配
{%-当'article'-%}
{%-当'page'-%}
{%-endcase-%}
{%-endfor-%}
{%endcapture%}
{%comment%}将分隔符字符串处捕获的字符串拆分为数组{%endcomment%}
{%-assign total_results=total_resuls|split:“-%”
{{'search.general.results_count'| t:count:total_results.size,terms:search_terms}
{将总结果分页28%}
{总结果百分比中的结果百分比}
{{result}}
{%endfor%}
{%endpaginate%}
我在前端遇到以下错误:
数组“总计结果”不可分页。

有没有办法使它可以分页

还是有一种方法直接修改Skur.Read结果集,这样分页不仅考虑了Suffice搜索的结果量,而且也考虑了变化?

顺便说一句,我们之所以这么做,是因为shopify似乎是根据只有变化匹配的信息找到产品的。但在这种情况下,它只链接到产品,用户需要再次手动转到正确的变体,这是非常糟糕的UX

即使用户直接按ID进行搜索,也会链接到正常的产品页面。我们希望它们直接链接到正确的变体,这也是该产品最初被包含在搜索结果中的原因


任何帮助都将不胜感激。或者关于如何实现这一点的指针。

不幸的是,无法对数组进行分页
paginate
标记只能与其他一些预定义对象上的
search.results
collection.products
一起使用

你试图实现它的方式在我看来是不可能的。但我想到了一些可能对你有所帮助的想法:

选项1。使用
search.terms
object建立到正确变体的链接。
主要问题是Shopify搜索结果

指向产品和用户的链接需要手动转到正确的变体

我只建议按原样显示搜索结果,但应用您的逻辑

//检查所有变体并与搜索词匹配

要向搜索结果URL添加
?variant_id=xxx
属性。然后,一旦客户进入产品页面,将根据此查询参数选择变体。这种逻辑也非常适合客户按变量ID进行搜索的情况

选项2。构建自定义搜索。这需要更多的努力,并意味着根本不使用Shopify搜索。您需要同步存储产品,并根据搜索表单中的查询从数据库返回分页结果。此选项将为您提供显示产品结果的灵活性


如果您只想根据用户的搜索查询选择正确的变量,我会选择选项1。但是,如果您有多个匹配的变体,并且您想要单独显示所有这些变体,或者能够从结果页面将客户重定向到每个匹配的变体,那么这可能不起作用


提示:您正在使用
{%-when'product'-%}
块仅过滤产品结果,但您可以在查询中使用
?type=product
仅搜索产品实体,忽略文章和页面。

不幸的是,无法在数组中分页
paginate
标记只能与其他一些预定义对象上的
search.results
collection.products
一起使用

你试图实现它的方式在我看来是不可能的。但我想到了一些可能对你有所帮助的想法:

选项1。使用
search.terms
object建立到正确变体的链接。
主要问题是Shopify搜索结果

指向产品和用户的链接需要手动转到正确的变体

我只建议按原样显示搜索结果,但应用您的逻辑

//检查所有变体并与搜索词匹配

要向搜索结果URL添加
?variant_id=xxx
属性。然后,一旦客户进入产品页面,将根据此查询参数选择变体。这种逻辑也非常适合客户按变量ID进行搜索的情况

选项2。构建自定义搜索。这需要更多的努力,并意味着根本不使用Shopify搜索。您需要同步存储产品并从数据库返回分页结果