shopify - 液体中的分页变体集合
问题描述
在我的集合模板中,如果适用,我将显示产品变体,如果不显示产品。这非常有效,因为它似乎不可能分页这一事实是安全的。我已经尝试创建一个自定义的变体/产品数组,但 paginate 不想与它有任何关系。
这是我目前使用的代码,可用于在网格中输出变体/产品:
{% for product in collection.products %}
{% if product.variants.size == 0 %}
{% include 'product-card-grid2', max_height: max_height %}
{% else %}
{% for variant in product.variants %}
{% include 'product-card-grid2', max_height: max_height %}
{% endfor %}
{% endif %}
{% endfor %}
你如何对这样的东西进行分页?从本质上讲,我想要优秀的 pimoroni.com 之类的东西。
Liquid 在阵列构造/操作方面似乎异常严格。
我想另一种方法是将列表输出为 json,然后在 JS 中手动处理它,但如果这是可以避免的,那就太好了。
一页可能显示 200,另一页可能显示 50。我想将其标准化为每页 20 - 也是为了避免达到 shopify 对收藏的硬性上限。
解决方案
仅使用液体是无法做到这一点的。
您可以对产品进行分页,但变体会抛出逻辑。
所以你们能做的不多。
一种 hacky 方法是将分页限制覆盖为一些疯狂的东西以显示所有产品并创建一个 JS 分页而不是液体分页。
例子:
{% paginate collection.products by 9999 %}
{% for product in collection.products %}
{% if product.variants.size == 0 %}
{% include 'product-card-grid2', max_height: max_height %}
{% else %}
{% for variant in product.variants %}
{% include 'product-card-grid2', max_height: max_height %}
{% endfor %}
{% endif %}
{% endfor %}
{% endpaginate %}
但是如果你有很多产品,后端处理请求的加载时间会非常慢。
另一种选择是使用 Storefront API 创建 GraphQL 查询并通过 JS 填充页面。但是对于这样的事情,这可能是一种矫枉过正。
另一种选择是使用某种应用程序来提取变体并为您创建分页。(再次通过JS)
最后一个选项是向您的客户描述这一点,并且由于 Shopify 的限制,您没有一种简单/优化的方式来处理变体分页。
推荐阅读
- javascript - 缓存不重复 .json 中的某些内容
- python - PySerial:使用 while 循环写入微控制器会增加 100 毫秒的循环时间
- c++ - 将文本文件中的 3x3 数组读入格式正确的 2d 矢量
- api - 使用来自 ansible playbook 的查询过滤 Splunk 响应
- javascript - 我如何将所有代码包装在 imageBackground
- swiftui - 在 SwiftUI 中使用 Toggle 禁用 Slider 会导致样式问题
- python - 巨大的 Numpy 列表 - 如何获得 n 位?
- angular - 在模板中获取异步结果并用作普通变量?
- javascript - Javascript不会显示消息
- python - 如何在熊猫数据框中指定没有任何标题的列名的数据类型?