n1k1dk
n1k1dk

Reputation: 87

Liquid check if metafield exists

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...

Upvotes: 0

Views: 1467

Answers (2)

TwistedOwl
TwistedOwl

Reputation: 1324

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 %}

Upvotes: 0

Charles C.
Charles C.

Reputation: 3913

<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 %}

Upvotes: 2

Related Questions