25

我有一个产品句柄列表,我想根据这个句柄获取产品。似乎没有办法告诉 Liquid 去购买单一产品。我可以使用 API 来做到这一点,但如果我使用 API,那么我必须使用 JavaScript,并且我必须复制我已经在片段中拥有的 HTML,并复制逻辑。

我正在尝试的精简版:

{% assign handle = 'my-product-handle' %}
{% assign product = products.handle %}
{% include 'snippet-product-item' %}
4

6 回答 6

36

您现在可以使用以下命令通过句柄检索产品:

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

目前没有文档支持这一点,但希望 Shopify 很快就会有一些切实的东西。

于 2015-06-15T18:17:27.327 回答
9

只是为了更新任何刚刚发现此问题的人,您现在可以根据其 Shopify/liquid 存储库中的all_products['handle']响应直接通过句柄引用产品。

于 2015-07-16T17:30:50.920 回答
7

您现在不仅可以通过其在任何流动页面上的句柄访问任何产品,all_products['the-handle-of-the-product']而且您可以像这样的产品变量一样威胁它:

{{ all_products['the-handle-of-the-product'].title }}{{ product.title }}这与 product.liquid 页面上的相同。

于 2015-09-09T22:38:51.313 回答
6

我也在寻找这个,我还没有找到一种方法来通过 id 在液体文件中获取产品。

但正如上面的答案告诉你可以通过手柄访问任何产品

{{ all_products['product-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 %}
于 2017-02-27T12:57:49.677 回答
3

你可以尝试这样的事情:

{% for product in collection.all_products %}
    {% if product.handle contains 'your-handle-name' %}
        // Do what you want here
    {% endif %}
{% endfor %}

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

干杯。

于 2014-06-01T19:51:25.020 回答
1

据我所知,您无法通过手柄在液体中取出产品。

这让我问了几个问题:为什么首先要有一个产品句柄列表?它从哪里来的?我建议将这些产品放在自定义集合中,然后您可以像这样引用它们:{% collections['my-collections'] %}

于 2012-11-07T19:20:25.580 回答