Saltar al contenido
merge.uydevelopers

Filtros

Un filtro transforma un valor: {{ product.price | money }}. Se encadenan de izquierda a derecha y algunos reciben parámetros con nombre (image_url: width: 600).

Los marcados como Merge son propios de la plataforma o se comportan distinto al Liquid estándar. Un filtro que no está en esta página no existe en el motor: usarlo es un error de render.

Dinero

Los montos llegan en unidades menores (centésimos): 12990 son $ 129,90. Formateá siempre con estos filtros, nunca dividas a mano.

moneyMerge

monto | money

Monto con el símbolo de la moneda de la tienda ($ para pesos, U$S para dólares), separador de miles con punto y decimales con coma. Si los decimales son ,00 no se muestran.

{{ product.price | money }}

Resultado: $ 1.290

money_with_currencyMerge

monto | money_with_currency

Como money, con el código ISO de la moneda al final.

{{ cart.total_price | money_with_currency }}

Resultado: $ 2.450,50 UYU

money_without_currencyMerge

monto | money_without_currency

Solo el número formateado, sin símbolo.

{{ variant.price | money_without_currency }}

Resultado: 1.290

money_without_trailing_zerosMerge

monto | money_without_trailing_zeros

Igual a money (que ya omite los ,00). Existe para que los themes portados funcionen sin cambios.

{{ product.price | money_without_trailing_zeros }}

Resultado: $ 1.290

Imágenes y medios

Reciben un objeto de imagen (o su URL) y arman la URL o el tag. image_url pide el tamaño que necesitás; la plataforma sirve la versión redimensionada cuando está disponible.

image_urlMerge

imagen | image_url: width: n, height: n

URL de la imagen. Con width y/o height, la URL de una versión redimensionada. Acepta un objeto de imagen o una URL.

{{ product.featured_image | image_url: width: 600 }}

image_tagMerge

url | image_tag: alt: texto, class: clase, width: n, height: n, sizes: s, loading: l

Un <img> con loading="lazy" y decoding="async" por defecto. loading: "eager" para la imagen principal de la página.

{{ product.featured_image | image_url: width: 800 | image_tag: alt: product.title, class: 'card__img' }}

Resultado: <img src="…" alt="Remera lisa" class="card__img" loading="lazy" decoding="async">

media_tagMerge

media | media_tag: class: clase

El <img> de un elemento de product.media, con su texto alternativo. Acepta los mismos parámetros que image_tag.

{% for media in product.media %}{{ media | media_tag }}{% endfor %}

video_tagMerge

video | video_tag: autoplay: true, loop: true, muted: true, controls: true, class: clase, preload: p

Un <video playsinline> de un setting de tipo video. Los atributos booleanos se agregan solo con true; preload acepta none, metadata o auto. Cualquier otro atributo se ignora.

{{ section.settings.video | video_tag: autoplay: true, muted: true, loop: true }}

placeholder_svg_tagMerge

'nombre' | placeholder_svg_tag: 'clase'

Un SVG neutro para mostrar donde todavía no hay imagen (por ejemplo, en una sección recién agregada). Toma el color del texto.

{{ 'image' | placeholder_svg_tag: 'placeholder' }}

payment_type_svg_tagMerge

tipo | payment_type_svg_tag: class: clase

Ícono de un medio de pago como tarjeta con su nombre (sin logos de marcas). Reconoce visa, master, amex, oca, cabal, creditel, anda, lider, passcard, abitab, redpagos, mercado_pago, paypal y otros; un tipo desconocido muestra su nombre.

{{ 'oca' | payment_type_svg_tag: class: 'icono-pago' }}

HTML, assets y datos

Arman tags HTML seguros. Lo que devuelven no se vuelve a escapar; cualquier texto que reciben sí se escapa.

asset_urlMerge

'archivo' | asset_url

URL pública de un archivo de assets/ en la versión publicada del theme. Solo archivos sueltos (sin subcarpetas).

{{ 'theme.css' | asset_url }}

stylesheet_tag

url | stylesheet_tag

Un <link rel="stylesheet">.

{{ 'theme.css' | asset_url | stylesheet_tag }}

Resultado: <link rel="stylesheet" href="…/theme.css">

script_tagMerge

url | script_tag

Un <script src defer>.

{{ 'theme.js' | asset_url | script_tag }}

Resultado: <script src="…/theme.js" defer></script>

metafield_tag

metacampo | metafield_tag

Renderiza un metacampo según su tipo: texto multilínea con <br>, link como <a>, lista de textos como <ul>, texto con formato tal cual. Sin valor no imprime nada.

{{ product.metafields.ficha.modo_de_uso | metafield_tag }}

structured_data

producto_o_artículo | structured_data

JSON-LD de schema.org: Product con sus ofertas para un producto, BlogPosting para un artículo. Va dentro de un <script type="application/ld+json">.

<script type="application/ld+json">{{ product | structured_data }}</script>

jsonMerge

valor | json

JSON del valor, seguro para incrustar en un <script type="application/json"> (no puede cerrar el tag).

<script type="application/json" id="producto">{{ product.variants | json }}</script>

default_errors

form.errors | default_errors

Lista <ul> con los errores de un formulario. Sin errores no imprime nada.

{% form 'contact' %}{{ form.errors | default_errors }}…{% endform %}

newline_to_br

texto | newline_to_br

Cambia los saltos de línea por <br />. El texto se escapa antes.

{{ block.settings.texto | newline_to_br }}

escape

texto | escape

Escapa HTML. La salida de {{ }} ya se escapa sola: usalo dentro de atributos armados con capture o para ser explícito.

<meta content="{{ page_description | escape }}">

escape_once

texto | escape_once

Escapa HTML sin volver a escapar las entidades que ya están escapadas.

{{ '1 &lt; 2 & 3' | escape_once }}

Resultado: 1 &lt; 2 &amp; 3

Traducciones y handles

Textos del theme desde locales/es.json, valores por defecto y handles.

tMerge

'clave.con.puntos' | t: variable: valor

Texto de locales/es.json. Interpola {{ variable }} y elige el plural con count (one / other). Una clave que falta muestra translation missing: es.<clave>.

{{ 'collections.products_count' | t: count: collection.products_count }}

Resultado: 12 productos

default

valor | default: otro

El valor, o otro si es vacío, nil o false. Respeta el HTML capturado con capture.

{{ section.settings.titulo | default: 'Novedades' }}

handleize

texto | handleize

Convierte un texto en handle: minúsculas, sin tildes y con guiones.

{{ 'Té & Hierbas Orgánicas' | handleize }}

Resultado: te-hierbas-organicas

handle

texto | handle

Alias de handleize.

{{ product.vendor | handle }}

url_for_vendor

marca | url_for_vendor

Link a la búsqueda de productos de esa marca.

<a href="{{ product.vendor | url_for_vendor }}">{{ product.vendor }}</a>

Texto

Filtros estándar de Liquid para strings.

FiltroUsoQué hace
appendtexto | append: ' más'Agrega un texto al final.
prependtexto | prepend: 'Desde 'Agrega un texto al principio.
capitalizetexto | capitalizePrimera letra en mayúscula.
downcasetexto | downcaseTodo en minúsculas.
upcasetexto | upcaseTodo en mayúsculas.
striptexto | stripSaca los espacios de los dos extremos.
lstriptexto | lstripSaca los espacios del principio.
rstriptexto | rstripSaca los espacios del final.
strip_htmlhtml | strip_htmlSaca las etiquetas HTML.
strip_newlinestexto | strip_newlinesSaca los saltos de línea.
removetexto | remove: 'x'Saca todas las apariciones.
remove_firsttexto | remove_first: 'x'Saca la primera aparición.
remove_lasttexto | remove_last: 'x'Saca la última aparición.
replacetexto | replace: 'a', 'b'Reemplaza todas las apariciones.
replace_firsttexto | replace_first: 'a', 'b'Reemplaza la primera.
replace_lasttexto | replace_last: 'a', 'b'Reemplaza la última.
slicetexto | slice: inicio, largoParte de un texto o de un array.
splittexto | split: ','Divide un texto en un array.
truncatetexto | truncate: 80Corta a una cantidad de caracteres con ....
truncatewordstexto | truncatewords: 20Corta a una cantidad de palabras.
sizevalor | sizeLargo de un texto o cantidad de elementos de un array.

Números

Aritmética estándar de Liquid.

divided_byMerge

n | divided_by: d

Divide. Como en Shopify, entre enteros el resultado es entero (redondea para abajo); con un divisor con decimales (100.0) el resultado tiene decimales.

{{ 2600 | divided_by: 1000 }} · {{ 2600 | divided_by: 1000.0 }}

Resultado: 2 · 2.6

FiltroUsoQué hace
absn | absValor absoluto.
at_leastn | at_least: 1Como mínimo ese valor.
at_mostn | at_most: 10Como máximo ese valor.
ceiln | ceilRedondea para arriba.
floorn | floorRedondea para abajo.
roundn | round: decimalesRedondea.
plusn | plus: 1Suma.
minusn | minus: 1Resta.
timesn | times: 2Multiplica.
modulon | modulo: 3Resto de la división.

Arrays

Filtros estándar de Liquid para listas.

FiltroUsoQué hace
firstlista | firstPrimer elemento.
lastlista | lastÚltimo elemento.
joinlista | join: ', 'Une los elementos en un texto.
maplista | map: 'title'Una propiedad de cada elemento.
wherelista | where: 'available', trueLos elementos con esa propiedad.
findlista | find: 'handle', 'x'El primer elemento con esa propiedad.
find_indexlista | find_index: 'id', idÍndice del primero que coincide.
haslista | has: 'available', trueSi algún elemento coincide.
rejectlista | reject: 'available', falseLos que no coinciden.
sumlista | sum: 'quantity'Suma de los valores (o de una propiedad).
compactlista | compactSaca los nil.
concatlista | concat: otraUne dos arrays.
reverselista | reverseInvierte el orden.
sortlista | sort: 'title'Ordena (distingue mayúsculas).
sort_naturallista | sort_natural: 'title'Ordena sin distinguir mayúsculas.
uniqlista | uniqSaca los repetidos.

URL y codificación

Codificación de URLs, base64 y hashes.

FiltroUsoQué hace
url_encodetexto | url_encodeCodifica para usar en una URL.
url_decodetexto | url_decodeDecodifica un texto de una URL.
base64_encodetexto | base64_encodeCodifica en base64.
base64_decodetexto | base64_decodeDecodifica base64.
sha256texto | sha256Hash SHA-256 en hexadecimal.
hmac_sha256texto | hmac_sha256: 'clave'HMAC-SHA256 en hexadecimal.

Fechas

Formato de fechas.

date

fecha | date: '%d/%m/%Y'

Formatea una fecha con el formato de strftime. Las fechas de los objetos vienen en ISO 8601.

{{ article.published_at | date: '%d/%m/%Y' }}

Resultado: 11/11/2026