2013-02-02 39 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

関連する問題