Shopify Liquid: If Statement
20,729
Multiple conditions in if statements don't work so well in liquid. See a similar question here.
One option is to use nested if statements:
{% if template == "index" or template == "page" %}
{% if settings.slideshow_enabled %}
<div class="container main content">...</div>
{% endif %}
{% endif %}
Or something like this:
{% if template == "index" or template == "page" %}
{% assign correct_template = true %}
{% endif %}
{% if correct_template and settings.slideshow_enabled %}
<div class="container main content">...</div>
{% endif %}
![Sylar](https://i.stack.imgur.com/ghs5V.jpg?s=256&g=1)
Author by
Sylar
Updated on June 30, 2020Comments
-
Sylar almost 4 years
I am trying to enable a div class based on when a user views certain web page eg: blog, index or ../page/webpage
The code is like this:
{% unless template contains "index" and settings.slideshow_enabled %} <div class="container main content"> {% endunless %}
That "container main content" shows an image behind the nav bar. On other pages, the image starts from below the nav bar. A clear example here: http://retina-theme.myshopify.com/
I want to have that same homepage, link the link above, on selected pages or template:
{% if template == "index" and template == "page" and settings.slideshow_enabled %} <div class="container main content"> {% endif %}
So far nothing I have tried worked. Any tips?
Edited:
I can't answer my own question as yet but this worked with a tweak to the javascript:
{% unless template contains "page" or template contains "index" and settings.slideshow_enabled %} <div class="container main content"> {% endunless %}
-
Sylar almost 10 yearshi. This partially works for me: {% unless template contains "page" or template contains "index" and settings.slideshow_enabled %} <div class="container main content"> {% endunless %}
-
Sylar almost 10 yearsBut this controls the static header: var $header = $(".index .header"); {% if settings.use_logo_home %} if ($(window).width() >= 768) { $('.logo img', $header).attr('src', $('.logo img').data('src-home')); } {% endif %} I need to add ".page" to it but I dont know javascript.
-
Steph Sharp almost 10 years@Sylar Just to check I understand your question, you want to show
<div class="container main content">
on "index" and "page" templates ifsettings.slideshow_enabled
? Or do you want to show that div for templates other than "index" and "page"? (In which case you could useunless
) -
Xiaodong Qi over 7 yearsIf I have more than 3 statement in the
if
condition, should I always use at most 2 statements at once and nest them up?