2012-11-07 14 views
8

Ich habe eine Liste von Produkthandles, und ich möchte das Produkt basierend auf diesem Griff abrufen. Es scheint, dass es keine Möglichkeit gibt, Liquid zu sagen, dass er ein einzelnes Produkt kaufen soll. Ich könnte dies mit der API tun, aber wenn ich die API verwende, dann muss ich JavaScript verwenden, und ich müsste den HTML-Code, den ich bereits in einem Snippet habe, kopieren und die Logik ebenfalls kopieren.Wie kann ich ein bestimmtes Produkt in Shopify Liquid abrufen?

eine abgespeckte Version von dem, was ich versuche:

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

Antwort

1

Soweit mir bekannt ist Sie ein Produkt nicht am Griff in Flüssigkeit holen kann.

Das bringt mich dazu, ein paar Fragen zu stellen: Warum haben Sie überhaupt eine Liste von Produktgriffen? Wo ist es hergekommen? Ich würde empfehlen, diese Produkte in einer benutzerdefinierten Sammlung setzen, dann können Sie sie wie folgt verweisen: {% collections['my-collections'] %}

3

Sie so etwas wie dies versuchen könnte:

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

alle Produkte Looping durch (könnte auch eine Schleife durch eine spezifische Sammlung), können Sie das gewünschte Produkt mit einer if-Anweisung finden.

Prost.

+0

Es ist in der Tat so aussehen ist die einzige Option. Nach vielem Versuch und Irrtum verlässt uns Shopify (sogar in 2015!) – cpres

+2

FYI: Shopify Liquid 'for' Loops haben eine harte Grenze von 50 Produkten.Wenn Ihre Sammlung mehr als 50 Produkte enthält, werden Sie nicht alle erreichen. Da diese Antwort gepostet wurde, hat Shopify 'all_products ['handle']' erlaubt, auf ein Produktobjekt mit seinem 'handle' zuzugreifen; wie in den neueren Antworten erwähnt. – FactoryAidan

19

Sie können nun ein Produkt über einen Handgriff mit dem folgende abrufen:

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

Es gibt zur Zeit keine Dokumentation dies zu sichern, aber hoffentlich wird es bald etwas Konkretes auf Shopify Seite.

+0

Mein Tag gerettet. Danke –

+1

Beide sind in Shopify gültig: '{{all_products ['some-handle']. Title}}' und '{{all_products.some-handle.title}}' – FactoryAidan

+0

Gibt es eine Möglichkeit, dies zu tun eine Sammlung, die alle Produkte statt all_products enthält, so dass wir nicht auf 20 beschränkt sind? Und können Sie alle Produkte paginieren? – Buts

6

Nur für alle, die nur dieses Update finden, können Sie jetzt Produkte direkt über Handle von all_products['handle'] wie this response auf ihre Shopify/Flüssigkeit Repo verweisen.

+0

arbeitete wie ein Charme! – JoshHighland

4

Sie können nicht nur jetzt jedes Produkt am Griff Zugriff auf jeder Flüssigkeit Seite mit all_products['the-handle-of-the-product'] aber man kann es Gefahr wie ein Produkt Variable wie so:

{{ all_products['the-handle-of-the-product'].title }}, die die gleichen wie {{ product.title }} auf der product.liquid Seite ist .

1

Ich suchte auch nach diesem, und ich habe keinen Weg gefunden, Produkt durch ID in flüssigen Akten zu erhalten.

Aber wie oben Antworten sagen Sie jedes Produkt durch eine

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

Griff zugreifen kann, was ich besorgt war über, dass ich gedacht wird, wenn Sie den Namen des Produkts Griff zu ändern, automatisch geändert wird, aber tatsächlich das passiert nicht, es wird immer noch der alte Griff sein.

Sie müssten ein anderes Produkt erstellen, um den Griff zu ändern, also denke ich {{ all_products['product-handle'] }} ist ziemlich gute Möglichkeit, auf Ihr Produkt zuzugreifen.

ich etwas wie folgt aus:

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