2012-11-07 9 views
8

Ho un elenco di handle di prodotto e desidero recuperare il prodotto in base a questo handle. Sembra che non ci sia modo di dire a Liquid di andare a prendere un singolo prodotto. Potrei farlo con l'API, ma se uso l'API allora devo usare JavaScript, e dovrei copiare l'HTML che ho già in uno snippet, e copiare anche la logica.Come posso recuperare un prodotto specifico in Shopify Liquid?

Un abbattuto versione di ciò che sto cercando:

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

risposta

1

Per quanto io sappia, non è possibile recuperare un prodotto per il manico in un liquido.

Questo mi porta a porre un paio di domande: perché hai un elenco di handle di prodotto in primo luogo? Da dove proviene? Mi consiglia di mettere questi prodotti in una raccolta personalizzata, allora si può fare riferimento in questo modo: {% collections['my-collections'] %}

3

si potrebbe provare qualcosa di simile:

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

Looping attraverso tutti i prodotti (potrebbe anche ciclo attraverso una specifica raccolta), è possibile trovare il prodotto desiderato con una dichiarazione if.

Cheers.

+0

E in effetti simile a questa è l'unica opzione. Dopo molte prove ed errori questo è ciò che Shopify ci lascia (anche nel 2015!) – cpres

+2

A proposito: Shopify Liquid 'for' ha un limite rigido di 50 prodotti.Se la tua raccolta ha più di 50 prodotti, non li raggiungerai tutti. Poiché questa risposta è stata pubblicata, Shopify ha permesso a 'all_products ['handle']' di accedere a un oggetto prodotto usando il suo 'handle'; come menzionato dalle risposte più recenti. – FactoryAidan

19

È ora possibile recuperare un prodotto tramite una maniglia con la seguente:

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

attualmente Non c'è alcuna documentazione a sostegno di questo, ma si spera che ci sarà qualcosa di tangibile sul lato Shopify presto.

+0

Salvato il mio giorno. Grazie –

+1

Entrambi i seguenti sono validi in Shopify: '{{all_products ['some-handle']. Title}}' e '{{all_products.some-handle.title}}' – FactoryAidan

+0

C'è un modo per farlo con una collezione che contiene tutti i prodotti invece di tutti i prodotti in modo che non siamo limitati a 20? E puoi paginare tutti i prodotti? – Buts

6

Solo per l'aggiornamento per chiunque solo trovando questo, è ora possibile fare riferimento ai prodotti direttamente tramite maniglia da all_products['handle'] come da this response sul loro repo Shopify/liquido.

+0

ha funzionato come un fascino! – JoshHighland

4

Non solo è possibile ora accedere a qualsiasi prodotto per la maniglia in qualsiasi pagina, liquida con all_products['the-handle-of-the-product'] ma è possibile minaccia che come una variabile di prodotto in questo modo:

{{ all_products['the-handle-of-the-product'].title }} che è la stessa come {{ product.title }} sulla pagina product.liquid .

1

Stavo cercando anche questo, e non ho trovato un modo per ottenere il prodotto da id all'interno di file liquidi.

Ma le risposte di cui sopra dicono si può accedere a qualsiasi prodotto attraverso una maniglia

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

Quello che ero preoccupato è che ho pensato che se si modifica il nome del manico prodotto cambia automaticamente, ma in realtà ciò non accade, sarà comunque il vecchio handle.

Avresti bisogno di creare un prodotto diverso per cambiare maniglia, quindi immagino che {{ all_products['product-handle'] }} sia un ottimo modo per accedere al tuo prodotto.

faccio qualcosa di simile:

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