是否将收藏分配给Shopify中自定义创建的收藏页?

是否将收藏分配给Shopify中自定义创建的收藏页?,shopify,Shopify,我正在Shopify上使用一个免费的冒险主题,我正在尝试制作一个定制的收藏页面 我在stackoverflow中找到了一个解决方案,但它对某些地方有所帮助。 解决方案概述如下: 复制collection.liquid中的所有内容,并将其粘贴到新代码段中(假设您将其称为collection Copy.liquid)。 然后,在要将集合页面添加到的页面中,只需添加{%include'集合副本'%} 这个解决方案很有效,但我还有一个问题。在自定义创建页面中,它会显示“对不起,此集合中没有产品”。在同

我正在Shopify上使用一个免费的冒险主题,我正在尝试制作一个定制的收藏页面

我在stackoverflow中找到了一个解决方案,但它对某些地方有所帮助。

解决方案概述如下: 复制collection.liquid中的所有内容,并将其粘贴到新代码段中(假设您将其称为collection Copy.liquid)。 然后,在要将集合页面添加到的页面中,只需添加{%include'集合副本'%}

这个解决方案很有效,但我还有一个问题。在自定义创建页面中,它会显示“对不起,此集合中没有产品”。在同一页面的自定义中,有一个“集合”部分。但在“收藏”部分,没有选择收藏的选项。只有“启用标记筛选”和“启用排序”复选框

网页:

您有没有想过用这个自定义创建的代码段分配一个集合

{%paginate collections[settings.frontpage_collection].products by 20%}
{{collection.title}
{%if当前_标记%}
&恩达什;{%assign title_tags=当前_tags | join:','%}
{{title_tags}}
{%endif%}
{%if collection.description!=空白%}
{{collection.description}}
{%endif%}
{%section'集合筛选器“%”
{%用于集合中的产品。产品%}
{%包括“产品卡”,产品:产品%}
{%else%}
{%comment%}
添加默认产品,以帮助仅针对集合/全部登录。
仅当
这家商店没有商品。
{%endcomment%}
{shop.products_count==0%}
{%assign collection_index=1%}
{(1..10)%中i的%
{%case i%}
{7%时为%7}
{%assign collection_index=1%}
{8%时为%1}
{%assign collection_index=2%}
{9%时为%1}
{%assign collection_index=3%}
{10%时为%1}
{%assign collection_index=4%}
{%endcase%}
{%assign collection_index=collection_index | plus:1%}
{%endfor%}
{%else%}
{%comment%}
如果集合存在但为空,则显示消息
{%endcomment%}
{{'collections.general.no|u匹配'|t}

{%endif%} {%endfor%} {%如果paginate.pages>1%} {{paginate | default | pagination | replace:'laquo;Previous','larr;'| replace:'Next»;','rarr;'} {%endif%}
{%endpaginate%}
似乎在任何地方都没有定义
集合
变量

我建议将代码段的开头改为:

{% paginate collections[settings.frontpage_collection].products by 20 %}
致:

当你在URL中包含
/collections/[something]
的页面上时,有一个隐式
集合
变量,但当你在URL中包含
/page/[something]
时,你在液体中有一个隐式
页面
变量

  • 注意:如果主题值中为
    设置设置的集合。frontpage_集合
    不是您想要的集合,您可以:

    a。使用主题旁边的“自定义”链接(最容易在/admin/themes页面上找到)更改值,如果您不打算将该设置用于任何其他内容,则该设置非常有用

    b。硬编码一个集合句柄,例如:
    collections['i-assure-this-will-never-change']
    ,但是硬编码字符串很难看,通常应该避免使用

    c。通过在
    config/settings\u schema.json
    中添加一个条目来创建您自己的主题设置-查看您是否仍在使用自定义主题设置;或

    d。如果您的所有内容都在一个节中,那么您可以使用节设置(类似于主题设置)生成一个变量,该变量专门绑定到该代码块

  • 如果您需要为多个集合创建这些特殊页面,并且这些页面中的每一个都在很大程度上重用相同的代码,那么您可以通过将公共代码移动到代码段并从页面模板向其传递变量来简化您的工作。为此:

  • 在主题的“snippets”文件夹中创建一个文件。(在本例中,假设该文件在page.liquid中名为
    collection
    。我们将向该代码段传递一个集合,以便您可以删除
    assign
    语句
  • 在特定于页面的模板中,确定集合句柄将是什么

    a、 这可能是硬编码的,也可能是您可以使用页面上的元字段或标记查找的内容。示例:
    {%assign collection\u handle='硬编码句柄'%}
    {%assign collection\u handle=page.metafields.related\u items.collection%}

  • 在您的页面模板中,包括您创建的代码段。我发现显式传递我想要使用的任何变量都有帮助,如:

    {%include'collection in page',collection:collections[collection\u handle]}


  • 希望这能有所帮助!

    在接受答案之前,你说得对:))这个解决方案有效,但迫使我为每个集合创建1页和4个流动文件。最后,我发现像“collection.list”这样的部分并没有指向我创建的页面。我想你在回答的开头就谈到了这一点:)

    在那之后,我找到了一个更好的解决方案。只需创建一个新的section.liquid文件并将其放置在“collection.liquid”中并使用“if”语句,就解决了我的问题

    {%if collection.handle=='less是mor
    
    {% assign collection = collections[settings.frontpage_collection] %}
    {% paginate collection.products by 20 %}