Discuss and resolve questions on Liquid, JavaScript, themes, sales channels, and site speed enhancements.
Hello!
I'm attempting to get variant information from an input field within a metaobject definition (Note: not a metafield definition). The data type for the input is Variant which presents a variant picker to the user. Everything up to that point works as expected. I also have the same setup for a Product input field. What's odd to me is that I can easily access all of the information for the Product value that gets returned with code like this:
{%- for entry in shop.metaobjects.store_content_schedule['2024-04-10']['cart_drawer_content'].value -%}
{%- if entry.product != blank -%}
{%- assign content_media = entry.product.value.featured_image -%}
{%- endif -%}
{%- assign img_width = 240 -%}
{%- assign content_media_src=content_media | image_url: width: img_width -%}
{%- assign content_media_alt_text = content_media.alt -%}
<img
class="content-img"
src="{{ content_media_src }}"
alt="{{ content_media_alt_text }}"
width="{{ img_width }}"
height="{{ img_width }}"
>
{%- endfor -%}
As expected, this consistently yields an image with all of this information filled in. If I try to do the same thing with the Variant input field however, everything is blank. The only thing I've been able to successfully return from the Variant input was a gid by doing something like this:
{%- if entry.variant != blank -%}
{{ entry.variant }}
{%- endif -%}
All of the sane and wacky attempts below return absolutely nothing:
{%- if entry.variant != blank -%}
{{ entry.variant.id }}
{{ entry.variant.value }}
{{ entry.variant.value.id }}
{{ entry.variant.values.id }}
{{ entry.variant.id.value }}
{{ entry.variant.id.values }}
{{ entry.variant.value.id.value }}
{{ entry.variant.values.id.value }}
{{ entry.variant.value.id.values }}
{{ entry.variant.values.id.values }}
{{ entry.variant.value.id.values }}
{{ entry.variant.values.id.values }}
{{ entry.variant.value.id.values }}
{{ entry.variant.values.id.values }}
{%- endif -%}
I've checked the docs (metaobject, data types, variant object) and can't seem to find an explanation as to why this might be. Does the Variant input also need a Product input for some reason? Meaning do I first need to grab a product using the Product input field and then using that information use the Variant input field to target that specific variant within the Product returned from the Product input?
Any help that can be offered would be greatly appreciated!
Solved! Go to the solution
This is an accepted solution.
Soooooo egg on my face. It turns out I was seeing this behavior because I hadn't noticed that the variant I was randomly selecting in during my testing belonged to a product that had actually been archived. So, as one might expect, if the variant you're attempting to get via liquid is archived it'll return the gid but nothing else.
This is an accepted solution.
Soooooo egg on my face. It turns out I was seeing this behavior because I hadn't noticed that the variant I was randomly selecting in during my testing belonged to a product that had actually been archived. So, as one might expect, if the variant you're attempting to get via liquid is archived it'll return the gid but nothing else.
Starting a B2B store is a big undertaking that requires careful planning and execution. W...
By JasonH Sep 23, 2024By investing 30 minutes of your time, you can unlock the potential for increased sales,...
By Jacqui Sep 11, 2024We appreciate the diverse ways you participate in and engage with the Shopify Communi...
By JasonH Sep 9, 2024