Saltar al contenido
merge.uydevelopers

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.value es el valor tipado (número, booleano, lista, calificación) ymetacampo.type su tipo.
  • metacampo | metafield_tag lo renderiza según su tipo (ver la tabla).
  • En comparaciones (==, >, blank) se usa el valor: un número se compara como número.

Tipos

TipoNombre en el adminEn Liquid
single_line_text_fieldTexto de una líneatexto
multi_line_text_fieldTexto de varias líneastexto (con metafield_tag, los saltos son <br>)
rich_text_fieldTexto con formatoHTML sanitizado
number_integerNúmero enteronúmero
number_decimalNúmero decimalnúmero
booleanSí o nobooleano
urlLinktexto (con metafield_tag, un <a>)
ratingCalificaciónobjeto con rating, scale_min y scale_max
list.single_line_text_fieldLista de textosarray 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 }}