2013-02-02 8 views
8

Vorrei includere uno snippet in un modello ma solo se il file snippet esiste. C'è un modo per farlo?Shopify liquido: come posso includere snippet condizionali nel liquido Shopify?

Ora sto usando solo:

{% include 'snippetName' %} 

Ma questo genera l'errore:

Liquid error: Could not find asset snippets/snippetName.liquid 

La ragione per cui ho bisogno di un tale funzionalità è perché ho un processo in background che aggiunge il frammento di seguito sopra.

risposta

17

Ho avuto questo problema da solo. Questa è stata la mia soluzione:

{% capture the_snippet_content %}{% include the_snippet %}{% endcapture %} 
{% unless the_snippet_content contains "Liquid error" %} 
    {% include reviews_snippet %} 
{% endunless %} 

Fondamentalmente acquisire il contenuto dello snippet come variabile. Se non c'è frammento Shopify genera l'errore:

Liquid error: Could not find asset snippets/caroline-flint-reviews.liquid

in modo da controllare per vedere se è generato che ... se quindi non stampare il frammento di : D

Naturalmente questo avrebbe rotto se si intende il tuo snippet per includere "Errore liquido" o se Shopify cambia mai il messaggio di errore.

+0

Questa è una grande risposta !!! – vovafeldman

+0

Così utile. Eliminato usando questo per creare un sistema di routing snippet basato sulle maniglie – Leland

0

@vovafeldman Non sono sicuro del motivo per cui non è possibile avere uno snippet vuoto, ma non esiste alcun file.

L'unica altra opzione a cui posso pensare è che si sta utilizzando un processo BG per generare lo snippet (e presumo che lo carichi), è sempre possibile utilizzare l'API modello per caricare la versione del modello che include lo snippet allo stesso tempo.

2

Estendendosi su risposta di Jon;

Creare un file chiamato snippet.liquid

{% capture snippet_content %}{% include snippet %}{% endcapture %} 
{% unless snippet_content contains "Liquid error" %} 
    {{ snippet_content }} 
{% endunless %} 

Poi, quando si desidera includere un file solo se esiste

{% include 'snippet' with 'filename_of_include' %} 
+0

Implementazione molto accurata. – Carlton

Problemi correlati