10

テンプレートにスニペットを含めたいのですが、スニペット ファイルが存在する場合のみです。それを行う方法はありますか?

今私はちょうど使用しています:

{% include 'snippetName' %}

しかし、これはエラーをスローします:

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

このような機能が必要な理由は、後でスニペットを追加するバックグラウンド プロセスがあるためです。

4

6 に答える 6

24

自分でこの問題を抱えていました。これが私の解決策でした:

{% 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がエラーメッセージを変更した場合、これは壊れます.

于 2013-03-26T11:08:41.007 に答える
2

わかりました、 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

于 2021-03-03T07:38:22.647 に答える
0

@vovafeldman空白のスニペットを作成できない理由はわかりませんが、ファイルが存在しません。

私が考えることができる唯一の他のオプションは、スニペットを生成するために BG プロセスを使用しているため (そして、それをアップロードすると想定しています)、いつでもテンプレート API を使用して、スニペットを含むテンプレートのバージョンを同時にアップロードできます。 .

于 2013-02-03T22:08:37.030 に答える