- This topic is empty.
- AuthorPosts
-
February 2, 2013 at 10:37 am #9586
vovafeldman
ParticipantI would like to include a snippet in a template but only if the snippet file exist. Is there any way I can do it?
Now I’m just using:
{% include 'snippetName' %}
But this throws the error:
Liquid error: Could not find asset snippets/snippetName.liquid
The reason I need such a functionality is because I have a background process that adds the snippet later on.
February 3, 2013 at 10:08 am #9587meeech
Participant@vovafeldman Not sure why you can’t have a blank snippet, but there’s no file exists.
The only other option I can think of is since you are using a BG process to generate the snippet (and I assume upload it), you can always use the template API to upload the version of the template that includes the snippet at the same time.
March 26, 2013 at 11:08 am #9592jon-heslop
ParticipantHad this problem myself. This was my solution:
{% capture the_snippet_content %}{% include the_snippet %}{% endcapture %} {% unless the_snippet_content contains "Liquid error" %} {% include reviews_snippet %} {% endunless %}
Basically capture the snippet’s content as a variable.
If there is no snippet Shopify generates the error:Liquid error: Could not find asset
snippets/caroline-flint-reviews.liquidSo check to see if it’s generated that… if so don’t print the snippet
😀Of course this would break if you intended your snippet to include “Liquid error” or if Shopify ever change the error message.
July 11, 2013 at 3:54 am #9589aidan
ParticipantAlternatively, you could create your own tag which does a check on the existence of the file, before attempting to process it.
https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-tags
September 8, 2016 at 9:33 am #9590a.wmly
ParticipantExtending on Jon’s answer;
Create a file called snippet.liquid
{% capture snippet_content %}{% include snippet %}{% endcapture %} {% unless snippet_content contains "Liquid error" %} {{ snippet_content }} {% endunless %}
Then when you want to include a file only if it exists
{% include 'snippet' with 'filename_of_include' %}
June 19, 2018 at 1:25 am #9588bgitlin
ParticipantUsing the code listed above by Jon or a.wmly both still gave me errors. However, simply writing
{% include 'snippet_name' %}
worked just fine.
Note that this only worked for files located in the “snippets/” folder. So Templates, for instance, did not work using this method.
March 3, 2021 at 7:38 am #9591rohit-gupta
ParticipantOkay, Coming here in 2021.
The include syntax is deprecated and infrequently used, also extending @a.wmly answer, this should be the latest syntax replacing include with 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 %}
references for include vs render : https://shopify.dev/docs/themes/liquid/reference/tags/deprecated-tags#include
- AuthorPosts
- You must be logged in to reply to this topic.