skip to Main Content

I want to check if a metafield (created with metafields Guru) exists on a product or not and based on that change a variable to show or hide the div holding the metafield.

I got this:

{% assign display = "inline-block" %}

{% if product.metafields.energielabel.energie.value  == blank %}
{% assign display = "none" %}
{% endif %}

<div id="energielabel-container"><img class="label" src="https://cdn.shopify.com/s/files/1/0619/8034/4516/{{ product.metafields.energielabel.energie.value }}" /></div>


<style>
#energielabel-container {
width: 80px;
display: {{ display }};
}


</style>

When I just add some example letters into to the if condition it´s working as it should (empty metafield = shows the exaple letters ), but redefining the variable doesn´t work…

2

Answers


  1. Your if statement checks if metafield is blank using == operator. What you want is to check if it’s not blank (if it exists)

    Try:

    {% if product.metafields.energielabel.energie.value != blank %}
      {% assign display = "none" %}
    {% endif %}
    
    Login or Signup to reply.
  2. <img class="label" src="https://cdn.shopify.com/s/files/1/0619/8034/4516/{{product.metafields.energielabel.energie.value}}" />
    

    The line above is questionable. you should store the whole url instead;

    using your method will create extra code and errors; the img tag will still fetch the url that does not exist. So just check with if tag and put all code inside.

    {% if product.metafields.energielabel.energie.value %}
    
    <style>
    #energielabel-container {
    width: 80px;
    display: inline-block;
    }
    </style>
    
    <div id="energielabel-container">
        <img class="label" src="https://cdn.shopify.com/s/files/1/0619/8034/4516/{{product.metafields.energielabel.energie.value}}" />
    </div>
    
    
    {% endif %}
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search