
Cómo obtener datos de Metaobjetos en Shopify (guía práctica con ejemplos reales)
Aprende paso a paso cómo recuperar y mostrar datos de metaobjetos en Shopify, incluso cuando un metaobjeto hace referencia a otro. Ejemplos reales con Liquid para usar en colecciones, secciones o snippets.
Lorenzo Romero
Desarrollador Full Stack
1. Qué son los Metaobjetos
Los metaobjetos son entidades personalizadas que puedes crear desde:
Configuración → Datos personalizados → Metaobjetos.
Por ejemplo, podrías tener un metaobjeto llamado benefit, con los siguientes campos:
benefit→ texto (nombre del beneficio)images→ referencia a otro metaobjetobenefit_image
Y el metaobjeto benefit_image tendría:
title→ textoimage→ imagen
Así puedes reutilizar información compleja y mantener una estructura ordenada.
2. Listar todos los registros de un metaobjeto
Para obtener todos los registros publicados de un tipo de metaobjeto (por ejemplo, benefit), usa:
{% for benefit in shop.metaobjects.benefits.values %}
<div class="benefit">
<h3>{{ benefit.benefit }}</h3>
</div>
{% endfor %}
🔸benefitses el handle del tipo de metaobjeto (no el nombre visible).
Puedes confirmarlo en Configuración → Datos personalizados → Metaobjetos → benefit.
3. Acceder a otro metaobjeto dentro de un metaobjeto
Si el campo images dentro de benefit apunta a un metaobjeto o a una lista de ellos (benefit_image), puedes recorrerlo así:
{% for benefit in shop.metaobjects.benefits.values %}
<div class="benefit">
<h3>{{ benefit.benefit }}</h3>
{% if benefit.images.value != blank %}
<div class="benefit-images">
{% for img in benefit.images.value %}
<div class="benefit-image">
<img src="{{ img.image | image_url: width: 400 }}" alt="{{ img.title }}">
<p>{{ img.title }}</p>
</div>
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
💡 Usa.valuepara convertir la referencia en el objeto real.
Siimagesno es una lista sino una sola referencia, no usesfor, solo accede directamente:
{% assign img = benefit.images.value %}
<img src="{{ img.image | image_url }}" alt="{{ img.title }}">
4. Mostrar los metaobjetos dentro de una colección
Si tu colección tiene un metafield que apunta a un metaobjeto benefit, puedes mostrarlo directamente en main-collection-product-grid.liquid.
Esto es ideal si cada colección tiene beneficios diferentes.
{% if collection.metafields.custom.benefits.value != blank %}
<section class="collection-benefits">
{% for benefit in collection.metafields.custom.benefits.value %}
<div class="benefit">
<h3>{{ benefit.benefit }}</h3>
{% if benefit.images.value != blank %}
<div class="benefit-images">
{% for img in benefit.images.value %}
<div class="benefit-image">
<img src="{{ img.image | image_url: width: 400 }}" alt="{{ img.title }}">
<p>{{ img.title }}</p>
</div>
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
</section>
{% endif %}
👉 Coloca este bloque antes o después del grid de productos.
O, mejor aún, guárdalo en un snippet (por ejemplo, snippets/collection-benefits.liquid) e inclúyelo así:
{% render 'collection-benefits' %}
5. Bonus: mostrar todas las colecciones
Si además quieres listar todas tus colecciones en alguna parte del tema:
{% for collection in collections %}
<a href="{{ collection.url }}">
<h3>{{ collection.title }}</h3>
</a>
{% endfor %}
O con imágenes:
{% for collection in collections %}
<div class="collection-item">
{% if collection.image %}
<img src="{{ collection.image | image_url: width: 600 }}" alt="{{ collection.title }}">
{% endif %}
<h3>{{ collection.title }}</h3>
</div>
{% endfor %}
6. Conclusión
Usar metaobjetos en Shopify te permite crear estructuras de datos limpias, modulares y potentes.
Puedes mostrar información jerárquica (como “benefit” → “benefit_image”) con total control sobre cómo se renderiza en tu tema Liquid.
Con un buen manejo de referencias y .value, tu tienda puede manejar información compleja sin depender de apps externas o duplicar contenido.
Sobre el autor
Lorenzo Romero
Desarrollador Full Stack
Especialista en automatización y desarrollo web
