2012-11-07 70 views
8

我有一個產品句柄的列表,我想基於這個句柄來獲取產品。似乎沒有辦法告訴Liquid去獲得單一產品。我可以用API來做到這一點,但是如果我使用API​​,那麼我必須使用JavaScript,而且我必須將我已經存在的HTML複製到片段中,然後複製邏輯。如何在Shopify Liquid中檢索特定產品?

一個削減什麼,我試圖版本:

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

回答

1

據我所知,你不能用它的手柄取液產品。

這使我想問幾個問題:爲什麼你首先要有一個產品手柄清單?它從哪裏來的?我建議你把這些產品中的自定義集合,那麼你可以這樣引用它們:{% collections['my-collections'] %}

3

你可以嘗試這樣的事:

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

通過所有產品均通過一個特定的循環(也環路集合),您可以使用if語句查找所需的產品。

乾杯。

+0

它確實看起來,這是唯一的選擇。經過多次試驗和誤差,這是Shopify離開我們的(甚至在2015年!) – cpres

+2

供參考:Shopify Liquid for for循環有50種產品的硬限制。如果您的收藏品包含超過50種產品,則無法達到全部。自從這個答案發布後,Shopify允許'all_products ['handle']'使用它的'handle'來訪問產品對象。正如最近的答案所述。 – FactoryAidan

19

您現在可以使用下面的檢索通過手柄的產品:

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

目前還沒有任何文件,以支持這一行動,但希望有很快就會Shopify上側有形的東西。

+0

保存了我的一天。謝謝 –

+1

Shopify有以下兩種情況: '{{all_products ['some-handle']。title}}'和{{all_products.some-handle.title}}' – FactoryAidan

+0

有沒有辦法做到這一點包含所有產品而不是all_products的集合,以便我們不限於20?你可以分頁all_products? – Buts

6

只是爲了更新任何人只找到這個,你現在可以直接引用的產品通過手柄由all_products['handle']this response他們Shopify /液體回購。

+0

工作就像一個魅力! – JoshHighland

4

您不僅可以通過其處理任何液體頁面上立即訪問的任何產品與all_products['the-handle-of-the-product']但你可以威脅它像一個產品變量,像這樣:這是一樣的{{ product.title }}的product.liquid頁面上

{{ all_products['the-handle-of-the-product'].title }}

1

我也在尋找這個,而且我還沒有找到一種方法在液體文件中通過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 %}