2013-02-02 154 views
8

我想在模板中包含代碼片段,但只有在代碼片段文件存在的情況下。有什麼辦法可以做到嗎?Shopify液體:我如何有條件地在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 %} 

基本上捕獲代碼段的內容作爲一個變量。 如果沒有片斷Shopify生成錯誤:

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

所以檢查,看它是否產生的......如果是這樣不打印的片斷 :d

當然,如果你打算這樣會破壞您的片段包含「液體錯誤」,或者Shopify是否曾更改錯誤信息。

+0

這是一個偉大的答案! – vovafeldman

+0

非常有用。使用此功能創建基於句柄的片段路由系統 – Leland

0

@vovafeldman不知道爲什麼你不能有一個空白的片段,但沒有文件存在。

我能想到的唯一的其他選擇是因爲您使用BG流程來生成代碼段(並且我假設上傳代碼段),您可以隨時使用模板API上傳包含片段的模板版本與此同時。

2

擴展Jon的答案;

創建一個名爲snippet.liquid

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

然後,當你想包括一個文件只如果它存在

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

非常整齊的實施。 – Carlton