如何在 Shopify 中对元对象进行分页?

问题描述 投票:0回答:2

我将元对象与元字段结合使用,在 Shopify 模板的产品页面中呈现一些特定信息。

我目前面临的问题是通过 Liquid 代码获取元对象仅返回 50 个结果。但是,我想对这些结果进行分页。现在我有:

....
{%- capture hex_color -%}
{% assign current_fabric_colors = shop.metaobjects.fabric_colors %}
{% for color in current_fabric_colors.values %}
   {% if color.name == handle[1] %}
       color.name
   {% endif %}
{% endfor %}
{%- endcapture -%}
....

问题是“shop.metaobjects.fabric_colors.values”仅返回 50 个值,而 Liquid 文档对元对象的了解非常差:https://shopify.dev/docs/api/liquid/objects/metaobject#metaobject_definition-loop -元对象定义的条目

PD:我在 Fabric_colors 中有 59 个元对象条目,其中每一个都是“活动的”。

我尝试复制以下内容但没有成功(在附加方法调用 .offset 和 .limit 时会抛出错误,就好像液体不接受它一样):https://community.shopify.com/c/shopify -设计/使用元对象无法访问主题中超过 50 个条目/td-p/1963918

由于metaobjects是Shopify最近的一个功能,恐怕还没有考虑到这一点,至少要通过Liquid来解决,而不是通过Storefront API(应该可以通过Liquid调用)。

PD:我对 Shopify 的 Liquid 不太有经验。

pagination shopify liquid
2个回答
2
投票

如果我是你,我会考虑一下并确定拥有一个包含 59 个条目的对象是否会更好。例如,一个 JSON 字段可以轻松容纳 59 个值。另外,元对象应该容纳许多较小的物品,对吗?因此,您可以拥有一个,而不是 59 个元对象,然后它包含许多较小的对象,例如元字段。

您可以选择如何重新布置躺椅,这一切都由您决定。 Shopify 一直将裸查询限制为 50 个商品,以免给系统造成负担。不过,对这些资源进行分页似乎有点多。颜色和十六进制代码非常适合作为 JSON Key:Value 对象。分配给商店一次,您可以在任何地方重复使用它们,只需要渲染一个简单的片段即可。


0
投票

这是一个对元对象进行排序的示例。确保在分页和 for 循环中使用

shop.metaobjects.{handle}.value
。您还可以包含
{{- paginate | default_pagination -}}
来呈现集合的自动分页链接,这将自动呈现开箱即用的参数化链接,带有下一个/上一个/页码。就我而言,我引用了一个
release
元对象,请更改它以满足您的需求。

<div class="page-width custom-releases">
  {% paginate shop.metaobjects.release.values by 24 %}
    <div class="custom-releases__grid">
      {% for release in shop.metaobjects.release.values %}
        <a class="custom-release full-unstyled-link" id="release-{{ release.system.id }}" href="{{ release.system.url }}">
          {{ release.title }}
        </a>
      {% endfor %}
    </div>
    {{- paginate | default_pagination -}}
  {% endpaginate %}
</div>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.