テンプレートにスニペットを含めたいのですが、スニペット ファイルが存在する場合のみです。それを行う方法はありますか?
今私はちょうど使用しています:
{% include 'snippetName' %}
しかし、これはエラーをスローします:
Liquid error: Could not find asset snippets/snippetName.liquid
このような機能が必要な理由は、後でスニペットを追加するバックグラウンド プロセスがあるためです。
テンプレートにスニペットを含めたいのですが、スニペット ファイルが存在する場合のみです。それを行う方法はありますか?
今私はちょうど使用しています:
{% 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 エラー: アセット スニペット/caroline-flint-reviews.liquid が見つかりませんでした
それで、それが生成されているかどうかを確認してください...もしそうなら、スニペットを印刷しないでください:D
もちろん、スニペットに「Liquid error」を含めることを意図した場合、またはShopifyがエラーメッセージを変更した場合、これは壊れます.
わかりました、 2021年にここに来ます。
インクルード構文は推奨されておらず、あまり使用されておらず、@a.wmly の回答も拡張しています。これは、include を render に置き換える最新の構文である必要があります。
{% capture snippet_content %}{% render 'your-snippet-name' %}{% endcapture %}
{% if snippet_content contains "Could not find asset" %}
{% comment %} do nothing {% endcomment %}
{% else %}
{% render 'your-snippet-name' %}
{% endif %}
include と render の参照: https://shopify.dev/docs/themes/liquid/reference/tags/deprecated-tags#include
@vovafeldman空白のスニペットを作成できない理由はわかりませんが、ファイルが存在しません。
私が考えることができる唯一の他のオプションは、スニペットを生成するために BG プロセスを使用しているため (そして、それをアップロードすると想定しています)、いつでもテンプレート API を使用して、スニペットを含むテンプレートのバージョンを同時にアップロードできます。 .