Metacampos
Los metacampos son datos propios que el comerciante agrega a sus productos y colecciones: origen, modo de uso, ficha técnica, calificación. El theme decide cómo mostrarlos.
Definiciones
El comerciante define cada metacampo en Configuración → Metacampos con unnamespace, una key y un tipo, y después completa el valor en cada producto o colección. El namespace y la key empiezan con una letra minúscula y siguen con minúsculas, números o _.
Si tu theme depende de metacampos, documentá en su README qué definiciones necesita (namespace, key y tipo) para que el comerciante las cree.
En Liquid
Se leen con product.metafields.<namespace>.<key> ycollection.metafields.<namespace>.<key>. Un metacampo sin valor esnil.
{{ metacampo }}imprime su valor escapado. El texto con formato sale tal cual (se guarda sanitizado).metacampo.valuees el valor tipado (número, booleano, lista, calificación) ymetacampo.typesu tipo.metacampo | metafield_taglo renderiza según su tipo (ver la tabla).- En comparaciones (
==,>,blank) se usa el valor: un número se compara como número.
Tipos
| Tipo | Nombre en el admin | En Liquid |
|---|---|---|
single_line_text_field | Texto de una línea | texto |
multi_line_text_field | Texto de varias líneas | texto (con metafield_tag, los saltos son <br>) |
rich_text_field | Texto con formato | HTML sanitizado |
number_integer | Número entero | número |
number_decimal | Número decimal | número |
boolean | Sí o no | booleano |
url | Link | texto (con metafield_tag, un <a>) |
rating | Calificación | objeto con rating, scale_min y scale_max |
list.single_line_text_field | Lista de textos | array de textos (con metafield_tag, un <ul>) |
Ejemplos
Un texto, solo si tiene valor:
{%- assign origen = product.metafields.ficha.origen -%}
{%- if origen != blank -%}
<p>Origen: {{ origen }}</p>
{%- endif -%}Una calificación con estrellas, usando value:
{%- assign puntaje = product.metafields.resenas.puntaje -%}
{%- if puntaje -%}
<p aria-label="{{ puntaje.value.rating }} de {{ puntaje.value.scale_max }}">
{%- for i in (1..puntaje.value.scale_max) -%}
{%- if i <= puntaje.value.rating %}★{% else %}☆{% endif -%}
{%- endfor -%}
</p>
{%- endif -%}Una lista de textos recorrida a mano, y un texto multilínea con metafield_tag:
{%- assign apto = product.metafields.ficha.apto_para -%}
{%- if apto.value.size > 0 -%}
<ul class="chips">
{%- for item in apto.value -%}<li>{{ item }}</li>{%- endfor -%}
</ul>
{%- endif -%}
{{ product.metafields.ficha.modo_de_uso | metafield_tag }}