Skip to main content
El bloque Custom code agrega tu propio HTML o React al carrito. Colócalo en cualquier sección del cajón, o anídalo dentro de Cart items como sub-bloque para que se repita en cada línea. A diferencia de otros bloques, no tiene configuraciones de Content ni sección de Design: el bloque es el código, así que trabajas completamente en su pestaña Code.
Vista previa animada de agregar y activar un bloque Custom code en el editor de Aftersell Cart

Agregar y activar un bloque Custom code

  1. Agrega un bloque Custom code a cualquier sección, o como sub-bloque bajo Cart items.
  2. Selecciónalo y abre la pestaña Code.
  3. Elige HTML o React component. Los bloques nuevos usan HTML de forma predeterminada.
  4. Escribe tu código.
  5. Si elegiste React, haz clic en Compile.
  6. Activa “Use custom template”. Para este bloque, ese interruptor significa “mostrar mi código personalizado”, y viene desactivado de forma predeterminada, por lo que nada se renderiza hasta que lo habilites.
  7. Mantén activado el conmutador del ojo de la barra lateral para que el bloque siga siendo visible para los compradores.
Tanto el conmutador del ojo como “Use custom template” deben estar activados para que el bloque aparezca.

Comportamiento

  • El bloque no renderiza nada hasta que el carrito se ha cargado.
  • Tampoco renderiza nada cuando el ojo de la barra lateral está desactivado, “Use custom template” está desactivado, el código está vacío o React falla al compilar o renderizar. Como una falla es silenciosa, revisa tu bloque en la vista previa antes de publicar.

Modo HTML

El modo HTML sustituye un pequeño conjunto de tokens en tu marcado. Es para contenido estático o basado en tokens, no para ejecutar lógica.

Tokens

Los valores de los tokens son cadenas formateadas (formato de moneda de la tienda, un porcentaje con % o una cantidad), listas para insertarse en el marcado:

Ejemplo

Modo React

El modo React compila un componente y le pasa los datos del carrito más una acción de add-to-cart.
  • El editor bloquea el envoltorio en function CustomCode(props: CustomCodeProps) { … }, y tú editas solo el cuerpo entre esas líneas.
  • Debes hacer clic en Compile y luego activar “Use custom template”, antes de que el bloque se muestre.
  • Tu componente puede usar useState, useEffect, useMemo, useRef y useCallback.
  • A diferencia del modo HTML, React se ejecuta en el contexto de la página, por lo que puede llamar a window y al Cart SDK cuando están disponibles.
  • Si tu componente lanza errores en tiempo de ejecución, el bloque no renderiza nada y el resto del carrito sigue funcionando.

Props

Los totales y los montos de ahorro son enteros en la unidad menor de la moneda (centavos para USD), por lo que $12.50 es 1250, no 12.50. No son cadenas de dinero formateadas como los tokens de HTML.

Las estructuras de cart y line

cart y line son los mismos objetos que el SDK expone en todas partes, por lo que están documentados una sola vez en la referencia del objeto de carrito: cada campo del carrito, de una línea y de un bundle. Los que más usarás: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice. Tres cosas específicas de este bloque:
  • line solo se establece en un sub-bloque de Cart items, donde tu componente se renderiza una vez por línea. Colocado como sección, line es null y en su lugar lees cart.items.
  • Los componentes de un bundle no están en cart.items. Cuando las líneas están agrupadas en un bundle, solo aparece la línea ancla; sus componentes viven en line.bundle.children.
  • Las líneas ocultas por una transformación de línea tampoco están ahí, aunque siguen contando para cart.totalPrice.

Ejemplos

Mostrar el recuento de artículos:
Como sub-bloque de Cart items, usa props.line para contenido por producto. El bloque se renderiza una vez por línea, etiquetado con el producto y la variante de esa línea:

Leer los metadatos de enriquecimiento

Cada artículo de cart.items lleva un campo metadata: un objeto vacío {} hasta que un enriquecedor de carrito lo rellena. Una vez rellenado, está indexado por el id del enriquecedor y contiene los datos de Storefront del producto o la variante de esa línea:
metadata siempre está presente y su valor predeterminado es un objeto vacío {} hasta que se completa la búsqueda asíncrona del enriquecedor (la prueba de “aún no enriquecido” es Object.keys(item.metadata).length === 0). Usa encadenamiento opcional (item.metadata?.enricherId) al leer la clave de un enriquecedor específico, ya que esa clave está ausente hasta que el enriquecimiento llega.

Leer los códigos de descuento y los descuentos por línea

cart.discountCodes enumera los códigos de descuento aplicados al carrito, y discountAllocations de cada línea enumera los descuentos aplicados a esa línea específica:

Ubicación y límites

  • Región: cualquiera (superior, cuerpo o inferior). También disponible como sub-bloque de Cart items.
  • Máximo: ilimitado.
  • Estado: carrito lleno y vacío (como bloque de sección). Como sub-bloque de Cart items, solo se renderiza cuando el carrito tiene líneas, una instancia por línea.
  • No está bloqueado, así que puedes eliminarlo u ocultarlo.
  • No hay sección de Design por bloque. Dale estilo a través de tu propio marcado, el CSS personalizado y tus configuraciones de diseño globales.

Cuándo usar el bloque de código personalizado vs. la plantilla personalizada vs. el script personalizado