2012-11-07 18 views
8

Mam listę uchwytów produktu i chcę pobrać produkt na podstawie tego uchwytu. Wygląda na to, że nie można powiedzieć Liquidowi, żeby poszedł po produkt. Mógłbym to zrobić za pomocą API, ale jeśli korzystam z interfejsu API, to muszę używać JavaScriptu, i będę musiał skopiować kod HTML, który już mam w kodzie, i skopiować również logikę.Jak mogę pobrać konkretny produkt w Shopify Liquid?

ściętego wersję co ja próbuje:

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

Odpowiedz

1

O ile jestem świadomy, że nie może pobrać produkt za uchwyt w cieczy.

To prowadzi mnie do zadawania kilku pytań: Dlaczego masz listę uchwytów produktów w pierwszej kolejności? Skąd się to wzięło? Polecam wprowadzenie tych produktów w niestandardowej kolekcji, można odwoływać się do nich tak: {% collections['my-collections'] %}

3

można spróbować czegoś takiego:

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

Przelotowe wszystkich produktów (można również pętlę poprzez specyficzny kolekcja), można znaleźć żądany produkt za pomocą instrukcji if.

Pozdrawiam.

+0

To rzeczywiście wygląda jak jest to jedyna opcja. Po wielu próbach i błędach jest to, co daje nam Shopify (nawet w 2015 roku!) – cpres

+2

FYI: Shopify Płynne pętle 'for' mają twardy limit 50 produktów.Jeśli Twoja kolekcja zawiera więcej niż 50 produktów, nie dotrzesz do wszystkich. Od momentu opublikowania tej odpowiedzi Shopify zezwoliło 'all_products ['handle']' na dostęp do obiektu produktu za pomocą jego 'handle'; jak wspominają nowsze odpowiedzi. – FactoryAidan

19

Teraz można pobrać produkt uchwytem przy użyciu następujących:

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

Obecnie nie ma dokumentacji na ten fakt, ale miejmy nadzieję, że nie będzie czymś namacalnym na stronie Shopify wkrótce.

+0

Uratowałem mój dzień. Dzięki –

+1

Oba poniższe są ważne w Shopify: '{{all_products ['some-handle']. Title}}' and '{{all_products.some-handle.title}}' – FactoryAidan

+0

Czy jest jakiś sposób na zrobienie tego z kolekcja, która zawiera wszystkie produkty zamiast all_products, abyśmy nie byli ograniczeni do 20? Czy możesz podzielić strony na wszystkie produkty? – Buts

6

Tylko dla aktualizacji dla każdego, kto tylko to znajdzie, możesz teraz odnosić produkty bezpośrednio za pomocą uchwytów przez all_products['handle'] zgodnie z this response w ich repozytorium Shopify/liquid.

+0

pracował jak urok! – JoshHighland

4

Nie tylko można uzyskać dostęp do dowolnego produktu za uchwyt na dowolnej stronie cieczowej z all_products['the-handle-of-the-product'] ale można groźba go jak zmienną produktu tak:

{{ all_products['the-handle-of-the-product'].title }} która jest taka sama jak {{ product.title }} na stronie product.liquid .

1

Szukałem tego również i nie znalazłem sposobu na uzyskanie produktu po id wewnątrz plików płynnych.

Ale jak powyższe odpowiedzi powiedzieć można uzyskać dostęp do dowolnego produktu przez uchwyt

{{ all_products['product-handle'] }}

Co Martwiłam się o to, że myślałem, że jeśli zmienisz nazwę uchwytu produktu zmienia się automatycznie, ale w rzeczywistości to się nie stanie, to nadal będzie stary uchwyt.

Musisz utworzyć inny produkt, aby zmienić uchwyt, więc domyślam się, że {{ all_products['product-handle'] }} to całkiem dobry sposób na uzyskanie dostępu do twojego produktu.

zrobić coś takiego:

{% assign product = all_products['test-product-1'] %} 
{% if product == blank %} 
    <h1>No product found</h1> 
{% else %} 
    <h1>{{ product.title }}</h1> 
{% endif %}