2013-02-02 5 views

Odpowiedz

17

Sam miałem ten problem. To było moje rozwiązanie:

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

Zasadniczo uchwycić treść fragmentu jako zmienną. Jeśli nie ma urywek Shopify generuje błąd:

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

więc sprawdzić, czy to jest generowane, że ... jeśli tak nie drukują fragment : D

Oczywiście byłoby to przerwać, jeśli przeznaczone Twój fragment zawiera "Błąd cieczy" lub jeśli Shopify kiedykolwiek zmieni komunikat o błędzie.

+0

To świetny odpowiedź !!! – vovafeldman

+0

Tak przydatne. Zrobiono to, aby utworzyć system rutowania oparty na urywkach – Leland

0

@vovafeldman Nie wiem, dlaczego nie można wstawić pustego fragmentu, ale nie istnieje żaden plik.

Jedyną inną opcją, o której mogę pomyśleć, jest to, że do generowania fragmentu kodu używasz procesu BG (i zakładam, że go przesłać), zawsze możesz użyć interfejsu API szablonu, aby przesłać wersję szablonu zawierającą fragment kodu w tym samym czasie.

2

Rozszerzenie na odpowiedź Jona;

Utwórz plik o nazwie snippet.liquid

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

Potem, gdy chcesz dołączyć plik tylko wtedy, gdy istnieje

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

Bardzo zadbana implementacja. – Carlton