Skip to main content

CTA Banner Double

Banner doble que divide el espacio horizontal en dos paneles independientes (50 % / 50 % en desktop). Cada panel tiene su propia imagen, texto superpuesto (título y descripción), botones CTA y enlace. En mobile los paneles se apilan verticalmente.


Vista previa​

Sin imagen disponible aún. Añade una captura en ./img/cta-banner-double.jpg y descomenta la línea siguiente.


Comportamiento​

  • Dos paneles en paralelo: En desktop (lg:) cada panel ocupa el 50 % del ancho. En mobile se apilan en vertical con un margen superior entre ellos.
  • Ancho completo: Si fullwidth: true, el bloque ocupa todo el viewport. Si false (default), queda centrado con ancho máximo de página.
  • El bloque entero es invisible si no hay ítems visibles: Si todos los ítems tienen visible: false, el componente no renderiza nada.
  • Texto siempre superpuesto: A diferencia de ctaBannerDoped, el bloque de texto siempre flota sobre la imagen. La propiedad position controla su posición vertical tanto en mobile como en desktop.
  • Imagen con lazy loading: Las imágenes usan lazyload con data-src / data-srcset. Si no se proporciona imagen desktop, el componente usa la imagen mobile como fallback en ambas resoluciones.
  • Enlace en toda la imagen: Cada panel se envuelve en un <a> que apunta a link.url. Si la URL está vacía, el enlace existe igualmente pero sin destino.
  • Botones en horizontal o vertical: La propiedad buttons.alignment controla si los botones de cada panel se muestran en línea ("horizontal") o apilados ("vertical").
  • Título y descripción admiten HTML: Los campos title.text y description.text se renderizan sin escapar, por lo que aceptan etiquetas HTML (<strong>, <u>, etc.).

Configuración​

Content Asset​

El widget se configura mediante un JSON en Business Manager → Content Assets y se incluye en cualquier página mediante <iscontentasset aid="ID_DEL_ASSET" />.

{
"fullwidth": true,
"items": [
{
"visible": true,
"position": {
"mobile": "bottom",
"desktop": "center"
},
"title": {
"visible": true,
"tag": "h2",
"text": "Título de <strong>ejemplo</strong>",
"color": "#FFFFFF"
},
"description": {
"visible": true,
"tag": "p",
"text": "Lorem ipsum dolor sit amet, <u>consectetur</u> elit, sed do <strong>eiusmod</strong> tempor.",
"color": "#E1E1E1"
},
"images": {
"mobile": "pages/banners/double/img/panel-1-mobile.jpg?$staticlink$",
"desktop": "pages/banners/double/img/panel-1-desktop.jpg?$staticlink$"
},
"link": {
"url": "$url('Search-Show', 'cgid', 'gafas-sol')$",
"target": "_self"
},
"buttons": {
"alignment": "horizontal",
"items": [
{
"visible": true,
"text": "Ver colección",
"link": {
"url": "$url('Search-Show', 'cgid', 'gafas-sol')$",
"target": "_self"
},
"color": {
"text": {
"default": "#000000",
"hover": "#FFFFFF"
},
"background": {
"default": "#FFFFFF",
"hover": "#000000"
}
}
}
]
}
},
{
"visible": true,
"position": {
"mobile": "bottom",
"desktop": "center"
},
"title": {
"visible": true,
"tag": "h2",
"text": "Segundo <strong>panel</strong>",
"color": "#FFFFFF"
},
"description": {
"visible": false,
"tag": "p",
"text": "",
"color": "#FFFFFF"
},
"images": {
"mobile": "pages/banners/double/img/panel-2-mobile.jpg?$staticlink$",
"desktop": "pages/banners/double/img/panel-2-desktop.jpg?$staticlink$"
},
"link": {
"url": "$url('Search-Show', 'cgid', 'gafas-graduadas')$",
"target": "_self"
},
"buttons": {
"alignment": "horizontal",
"items": [
{
"visible": true,
"text": "Descubrir",
"link": {
"url": "$url('Search-Show', 'cgid', 'gafas-graduadas')$",
"target": "_self"
},
"color": {
"text": {
"default": "#000000",
"hover": "#FFFFFF"
},
"background": {
"default": "#FFFFFF",
"hover": "#000000"
}
}
}
]
}
}
]
}

Propiedades​

Raíz​

PropiedadTipoObligatorioDescripción
fullwidthbooleanNoSi true, el bloque ocupa todo el ancho del viewport. Si false (default), queda centrado con ancho máximo.
itemsarraySíArray de paneles. Se renderizan solo los que tengan visible: true. Si no hay ninguno visible, el bloque no aparece.

items[]​

PropiedadTipoObligatorioDescripción
items[].visiblebooleanNoSi false, el panel no se renderiza. Default: true.
items[].positionobjectNoPosición vertical del bloque de texto superpuesto sobre la imagen.
items[].position.mobilestringNoPosición en mobile. Valores: "top", "center", "bottom". Default: "bottom".
items[].position.desktopstringNoPosición en desktop. Valores: "top", "center", "bottom". Default: "bottom".
items[].titleobjectNoTítulo del panel, superpuesto sobre la imagen.
items[].descriptionobjectNoDescripción o subtexto del panel, superpuesto bajo el título.
items[].imagesobjectSíRutas de imágenes mobile y desktop del panel.
items[].linkobjectNoEnlace que envuelve toda la imagen del panel.
items[].buttonsobjectNoBloque de botones CTA del panel.

items[].title​

PropiedadTipoObligatorioDescripción
items[].title.visiblebooleanNoSi true y text no está vacío, muestra el título.
items[].title.tagstringNoEtiqueta HTML: "h1"–"h6" o "p". Default: "p".
items[].title.textstringNoContenido del título. Admite HTML (<strong>, <em>, etc.).
items[].title.colorstringNoColor del texto. Formato hexadecimal. Default: currentColor.

items[].description​

PropiedadTipoObligatorioDescripción
items[].description.visiblebooleanNoSi true y text no está vacío, muestra la descripción.
items[].description.tagstringNoEtiqueta HTML: "h1"–"h6" o "p". Default: "p".
items[].description.textstringNoContenido de la descripción. Admite HTML.
items[].description.colorstringNoColor del texto. Formato hexadecimal. Default: currentColor.

items[].images​

PropiedadTipoObligatorioDescripción
items[].images.mobilestringSíImagen para mobile. Referencia: 528 × 600 px. Debe terminar en ?$staticlink$.
items[].images.desktopstringNoImagen para desktop (viewport ≥ 768 px). Referencia: 528 × 600 px. Si está vacío, se usa la imagen mobile.

PropiedadTipoObligatorioDescripción
items[].link.urlstringNoURL de destino de la imagen. Admite expresiones $url de SFCC. Si está vacío, el enlace no navega.
items[].link.targetstringNo"_self" (misma pestaña) o "_blank" (nueva pestaña). Default: "_self".

items[].buttons​

PropiedadTipoObligatorioDescripción
items[].buttons.alignmentstringNoDisposición de los botones: "horizontal" (en línea) o "vertical" (apilados). Default: horizontal.
items[].buttons.itemsarrayNoLista de botones del panel.
items[].buttons.items[].visiblebooleanNoSi true y text no está vacío, el botón se renderiza.
items[].buttons.items[].textstringSíTexto del botón.
items[].buttons.items[].link.urlstringSíURL de destino del botón. Admite expresiones $url de SFCC.
items[].buttons.items[].link.targetstringNo"_self" o "_blank".
items[].buttons.items[].color.text.defaultstringNoColor del texto del botón en estado normal. Default: currentColor.
items[].buttons.items[].color.text.hoverstringNoColor del texto del botón al hacer hover.
items[].buttons.items[].color.background.defaultstringNoColor de fondo del botón en estado normal. Default: transparent.
items[].buttons.items[].color.background.hoverstringNoColor de fondo del botón al hacer hover.

Notas y consejos​

Ficheros

content/ctaBannerDouble.isml

Imágenes y $staticlink$

Todas las rutas de imagen deben terminar en ?$staticlink$. Las imágenes de referencia son 528 × 600 px para ambas resoluciones (los paneles siempre tienen el mismo ratio):

"images": {
"mobile": "pages/banners/double/img/panel-1.jpg?$staticlink$",
"desktop": "pages/banners/double/img/panel-1-desk.jpg?$staticlink$"
}

Si images.desktop está vacío, el componente usa la imagen mobile como fallback en desktop.

Etiquetas semánticas para title y description

El campo tag controla la jerarquía HTML. Usa "h2"–"h6" para títulos y "p" para textos de apoyo. Evita "h1" salvo que sea el único H1 de la página:

"title": { "tag": "h2", "text": "Colección verano" },
"description": { "tag": "p", "text": "Hasta 30% de descuento" }
Enlaces dinámicos ($url)

Usa expresiones $url de SFCC para garantizar que los enlaces funcionen en todos los entornos:

"url": "$url('Search-Show', 'cgid', 'gafas-sol')$"
"url": "$url('Product-Show', 'pid', '123456789')$"
"url": "$url('Page-Show', 'cid', 'about-us')$"
Colores en formato hexadecimal

Usa siempre formato hexadecimal para los colores de texto y botones:

"color": {
"text": { "default": "#FFFFFF", "hover": "#000000" },
"background": { "default": "#000000", "hover": "#FFFFFF" }
}
Alineación de botones

Si hay dos botones en el panel, usa "alignment": "vertical" para evitar que se desborden en pantallas estrechas:

"buttons": {
"alignment": "vertical",
"items": [ ... ]
}
El texto siempre flota sobre la imagen

En ctaBannerDouble el texto se superpone siempre sobre la imagen. No existe opción para colocarlo fuera. Asegúrate de que las imágenes tengan suficiente contraste o zona oscura en la posición configurada para que el texto sea legible.