2013-02-02 2 views
8

스 니펫 파일이있는 경우에만 스 니펫을 템플릿에 포함하고 싶습니다. 내가 할 수있는 방법이 있니?Shopify liquid : 조건부로 코드를 Shopify 액체에 포함시킬 수 있습니까?

{% include 'snippetName' %} 

을하지만이 오류가 발생합니다 : : 이제

난 그냥 사용하고 나중에 스 니펫을 추가 백그라운드 프로세스를 가지고 있기 때문에

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

나는 그런 기능을 필요로하는 이유입니다 에.

답변

17

이 문제가 직접 발생했습니다. 이것은 내 해결책이었습니다.

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

기본적으로 스 니펫의 내용을 변수로 캡처합니다. D

의도 경우이 휴식 것입니다 물론 :

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

그래서이 때문에 조각 를 인쇄하지 않으면 것을 ... 생성 된 것 있는지 확인 : 어떤 조각이없는 경우 는 Shopify는 오류가 발생합니다 귀하의 발췌 문장에 "액체 오류"가 포함되거나 Shopify가 오류 메시지를 변경하는 경우.

+0

존재하는 경우에만 파일을 포함 할 때! – vovafeldman

+0

이렇게 유용합니다. 상처를 입은 스 니펫 라우팅 시스템을 사용하여 핸들을 만들었습니다 – Leland

0

@vovafeldman 빈 스 니펫을 사용할 수없는 이유를 모르지만 파일이 없습니다.

내가 생각할 수있는 유일한 다른 옵션은 스 니펫을 생성하기 위해 BG 프로세스를 사용하고 있으므로 (업로드한다고 가정 함) 항상 템플릿 API를 사용하여 스 니펫이 포함 된 템플릿의 버전을 업로드 할 수 있습니다 동시에.

2

;

라는 파일을 만들기

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

을 snippet.liquid 그런 다음 당신이 좋은 대답

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

매우 깔끔한 구현. – Carlton