我想在模板中包含代碼片段,但只有在代碼片段文件存在的情況下。有什麼辦法可以做到嗎?Shopify液體:我如何有條件地在Shopify液體中添加片段?
現在,我只是用:
{% include 'snippetName' %}
但這引發錯誤:
Liquid error: Could not find asset snippets/snippetName.liquid
我之所以需要這樣的功能,因爲我有一個後臺進程,後來增加了片段上。
我想在模板中包含代碼片段,但只有在代碼片段文件存在的情況下。有什麼辦法可以做到嗎?Shopify液體:我如何有條件地在Shopify液體中添加片段?
現在,我只是用:
{% include 'snippetName' %}
但這引發錯誤:
Liquid error: Could not find asset snippets/snippetName.liquid
我之所以需要這樣的功能,因爲我有一個後臺進程,後來增加了片段上。
自己有這個問題。這是我的解決方案:
{% 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是否曾更改錯誤信息。
@vovafeldman不知道爲什麼你不能有一個空白的片段,但沒有文件存在。
我能想到的唯一的其他選擇是因爲您使用BG流程來生成代碼段(並且我假設上傳代碼段),您可以隨時使用模板API上傳包含片段的模板版本與此同時。
或者,您可以創建自己的標籤,在嘗試處理文件之前檢查文件的存在。
https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-tags
如果您從「根」管理液體,則可以創建自己的標籤。 Shopify已定義了所有標籤,並且您無法創建新標籤。 – alexandresaiz
擴展Jon的答案;
創建一個名爲snippet.liquid
{% capture snippet_content %}{% include snippet %}{% endcapture %}
{% unless snippet_content contains "Liquid error" %}
{{ snippet_content }}
{% endunless %}
然後,當你想包括一個文件只如果它存在
{% include 'snippet' with 'filename_of_include' %}
非常整齊的實施。 – Carlton
這是一個偉大的答案! – vovafeldman
非常有用。使用此功能創建基於句柄的片段路由系統 – Leland