Skip to main content
El JavaScript del tema habla con la tienda por endpoints al estilo Shopify. Todos los montos son centavos enteros y todas las respuestas de carrito comparten una misma forma (el carrito completo), también en add.js.

Leer el carrito

Cada línea trae id, variant_id, quantity, title, variant_title, sku, price, line_price, final_line_price, image, url y available.

Escribir en el carrito

Los cuatro endpoints de escritura aceptan JSON (o form-encoded) y responden con el carrito completo:
Un error de negocio (sin stock, cantidad inválida) responde 422 con { status, message, description }. Después de cada escritura exitosa, anuncia el cambio al resto del tema:

Secciones re-renderizadas en la misma respuesta

Igual que en Shopify, las escrituras aceptan un parámetro sections para que la respuesta incluya el HTML actualizado de las secciones que nombres — un solo round-trip actualiza estado y DOM:
sections_url es la ruta contra la que se renderizan (por defecto /carrito). Cada fragmento llega con su wrapper riqra-section-{id} incluido: reemplaza el nodo completo.

Section Rendering API

Fuera de las escrituras de carrito, GET /api/sections re-renderiza secciones de cualquier ruta con superficie de tema — filtros de colección, mini-carrito, etc.:
A diferencia de Shopify, ?sections= no se intercepta sobre las URLs de página: usa siempre este endpoint.
Al reemplazar el HTML de una sección, despacha riqra:section:load sobre el nodo nuevo para que los scripts que escuchan ese evento se re-inicialicen (los custom elements se re-montan solos):
El personalizador del panel usa este mismo evento cuando refresca secciones en la vista previa.

Eventos del tema

Origin resume el patrón completo — un snapshot compartido del carrito, invalidado por el evento:

JSON de producto

Para pickers de variantes o vistas rápidas:
compare_at_price mayor que price es la señal de oferta — los badges de descuento se derivan de esa comparación, no de un objeto de promociones.