在Shopify Liquid中如何检索特定产品?

26

我有一份产品句柄清单,并且想要根据这个句柄获取产品。似乎没有办法告诉Liquid去获取单个产品。我可以使用API来完成,但如果我使用API,那么我必须使用JavaScript,并且我需要复制已经在片段中的HTML和逻辑。

我正在尝试的简化版:

{% assign handle = 'my-product-handle' %}
{% assign product = products.handle %}
{% include 'snippet-product-item' %}
6个回答

38

现在可以使用以下方式通过 handle 检索产品:

{% assign someProduct = all_products.some-handle %}

目前没有文件可以证明这一点,但希望Shopify方面很快会有实质性的东西。


挽救了我的一天。谢谢。 - D.Shinekhuu
4
在Shopify中,以下两种写法都是有效的:{{all_products['some-handle'].title}}{{all_products.some-handle.title}} - FactoryAidan
1
有没有一种方法可以使用包含所有产品的集合来完成这个任务,而不是使用all_products,这样我们就不会受到20个产品的限制?并且你能对all_products进行分页吗? - GeorgeButter
我觉得方括号符号更灵活,因为它允许将变量用于句柄标识符。例如:{% capture productHandle %}{% include 'shortcode-render' render:'handle' default:'' %}{% endcapture %} {% assign productData = all_products[ productHandle ] %} - Juniper Jones
1
注意:目前 Shopify 在任何给定站点上仅允许 20 次“all_product”调用,因此如果您想在循环中使用它,请注意。 - Patrick
显示剩余2条评论

9

对于任何刚刚发现这篇文章的人,我想更新一下,您现在可以通过all_products ['handle'] 直接引用产品,就像他们在Shopify/liquid存储库上的回应中所述。


8

现在你不仅可以通过 all_products ['产品的handle'] 在任何页面访问任何产品,而且还可以像处理产品变量一样处理它,例如:

{{ all_products['产品的handle'].title }} 这与产品页面上的 {{ product.title }} 相同。


7
我也在寻找如何在Liquid文件中通过产品ID获取产品信息,但我并没有找到方法。
以上回答告诉你可以通过handle访问任何产品:
{{ all_products['product-handle'] }}
我的疑问是如果更改产品handle,是否会自动更改名称,但实际上这并不会发生,它仍然是旧的handle。
您需要创建一个不同的产品才能更改handle,因此我认为使用{{ all_products['product-handle'] }}是访问产品的很好的方法。
我做了这样一个操作:
{% assign product = all_products['test-product-1'] %}
{% if product == blank %}
    <h1>No product found</h1>
{% else %}
    <h1>{{ product.title }}</h1>
{% endif %}

3
您可以尝试这样做:
{% for product in collection.all_products %}
    {% if product.handle contains 'your-handle-name' %}
        // Do what you want here
    {% endif %}
{% endfor %}

循环所有产品(也可以循环特定的集合),您可以使用if语句找到所需的产品。
干杯。

看起来这确实是唯一的选择。经过多次尝试和错误,这就是Shopify留给我们的(即使在2015年!) - cpres
4
提示:Shopify 的 Liquid for 循环有 50 个产品的硬性限制。如果您的集合超过 50 个产品,则无法访问所有产品。自发布此答案以来,Shopify 允许使用 all_products['handle'] 根据其 handle 访问产品对象,如较新的答案所述。 - FactoryAidan
所有产品的数量上限为20个。 - eballeste

1
据我所知,在Liquid中无法通过其句柄获取产品。
这让我想问几个问题:你为什么要首先列出产品句柄列表?它是从哪里来的?我建议将这些产品放入自定义集合中,然后您可以像这样引用它们:{% collections['my-collections'] %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接