Skip to main content

Page Collections

Plantilla de página editorial completa para mostrar colecciones o lookbooks. Se organiza en tres zonas independientes:

  1. Cabecera (header) — banner de gran formato (imagen o vídeo) con texto superpuesto opcional y enlace.
  2. Grupos (groups) — una o varias cuadrículas de bloques. Cada bloque puede ser de tipo product, image, video o text, con span de columnas y filas configurable.
  3. Landing (landing) — sección inferior con un content asset embebido y un botón CTA de dos líneas con colores totalmente personalizables.

Vista previa

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


Comportamiento

  • fullwidth raíz: si true, la página ocupa el 100% del ancho del viewport sin márgenes laterales.
  • gap raíz: controla si hay separación vertical entre los grupos.
  • Cabecera: sólo se renderiza si header.visible: true. Admite banner de imagen o de vídeo (archivo MP4 o YouTube) en la propiedad content.
  • Texto de cabecera: si header.text.title o header.text.description tienen valor, se superponen sobre el banner. Opcionalmente se puede incluir una imagen de logo (header.text.image).
  • Grupos: cada grupo es una cuadrícula CSS. La propiedad gap del grupo añade separación entre sus ítems. Los ítems se colocan en orden de documento y pueden ocupar varias columnas (columns) y filas (rows).
  • Fondo de grupo: cada grupo admite un color de fondo opcional (style.background) que se aplica a toda la cuadrícula, detrás de todos sus ítems.
  • Enlace de ítem: si link.url tiene valor, el bloque completo queda envuelto en un <a>. Admite expresiones $url de SFCC.
  • Ítem de tipo product: renderiza el tile de producto usando el ID de SFCC. Las imágenes image_1 y image_2 sobreescriben las imágenes de producto predeterminadas (hover incluido). Admite además un borde opcional (content.style.border) aplicado directamente a la imagen del producto.
  • Ítem de tipo image: admite logo superpuesto y botón CTA con colores totalmente configurables.
  • Ítem de tipo video: soporta fichero MP4 (URL directa) o YouTube (ID del vídeo). Opciones de reproducción automática, silencio, bucle y controles.
  • Ítem de tipo text: bloque de título y texto plano, sin imagen.
  • Landing: el content asset referenciado por contentAssetId se incrusta en el cuerpo de la página. El botón CTA aparece encima (text.top) y debajo (text.bottom) de dicho asset.

Configuración

El JSON se introduce en el cuerpo del content asset en Business Manager → Content Assets.

{
"fullwidth": true,
"gap": false,
"header": {
"visible": true,
"fullwidth": true,
"text": {
"title": "Colección Verano 2025",
"image": {
"url": "",
"alt": ""
},
"description": "Descubre los estilos de la temporada"
},
"link": {
"url": "$url('Search-Show', 'cgid', 'novedades')$",
"target": "_self"
},
"content": {
"type": "image",
"alt": "Colección Verano 2025",
"file": {
"mobile": "pages/collections/summer25/header-mobile.jpg?$staticlink$",
"desktop": "pages/collections/summer25/header-desktop.jpg?$staticlink$"
}
}
},
"groups": [
{
"gap": true,
"style": {
"background": "#ffffff"
},
"items": [
{
"columns": 2,
"rows": 2,
"link": {
"url": "$url('Search-Show', 'cgid', 'gafas-sol')$",
"target": "_self"
},
"type": "image",
"content": {
"alt": "Gafas de sol",
"mobile": "pages/collections/summer25/block-sol-mobile.jpg?$staticlink$",
"desktop": "pages/collections/summer25/block-sol-desktop.jpg?$staticlink$",
"logo": "",
"button": {
"text": "Ver gafas de sol",
"color": {
"text": "#ffffff",
"background": "#000000",
"border": "#000000",
"hover": {
"text": "#000000",
"background": "#ffffff",
"border": "#ffffff"
}
}
}
}
},
{
"columns": 1,
"rows": 1,
"link": {
"url": "$url('Product-Show', 'pid', 'HK-ONE-SUNGLASSES-001')$",
"target": "_self"
},
"type": "product",
"content": {
"id": "HK-ONE-SUNGLASSES-001",
"image_1": "",
"image_2": "",
"style": {
"border": {
"width": "0.6px",
"color": "#000000"
}
}
}
},
{
"columns": 1,
"rows": 1,
"link": {
"url": "",
"target": "_self"
},
"type": "text",
"content": {
"title": "Diseño atemporal",
"text": "Cada pieza de nuestra colección combina materiales premium con un diseño que trasciende las tendencias."
}
},
{
"columns": 1,
"rows": 2,
"link": {
"url": "",
"target": "_self"
},
"type": "video",
"content": {
"options": {
"autoplay": true,
"muted": true,
"loop": true,
"controls": false
},
"file": {
"mobile": "https://cdn.hawkers.com/media/collections/summer25/loop-mobile.mp4",
"desktop": "https://cdn.hawkers.com/media/collections/summer25/loop-desktop.mp4"
},
"poster": {
"mobile": "pages/collections/summer25/video-poster-mobile.jpg?$staticlink$",
"desktop": "pages/collections/summer25/video-poster-desktop.jpg?$staticlink$"
}
}
}
]
}
],
"landing": {
"contentAssetId": "summer25-landing-grid",
"button": {
"text": {
"top": "Descubre la colección completa",
"bottom": "Ver todo"
},
"color": {
"text": "#ffffff",
"background": "#000000",
"border": "#000000",
"hover": {
"text": "#000000",
"background": "#ffffff",
"border": "#ffffff"
}
}
}
}
}

Propiedades

Raíz

PropiedadTipoObligatorioDescripción
fullwidthbooleanNoSi true, la página no tiene márgenes laterales y ocupa todo el viewport.
gapbooleanNoSi true, añade separación vertical entre grupos.
headerobjectNoZona de cabecera con banner y texto superpuesto.
groupsarrayListado de grupos, cada uno con su propia cuadrícula de ítems.
landingobjectNoSección inferior con content asset embebido y botón CTA.

Cabecera (header)

PropiedadTipoObligatorioDescripción
header.visiblebooleanSi false, la cabecera completa no se renderiza.
header.fullwidthbooleanNoSi true, el banner de cabecera ocupa el ancho completo.
header.text.titlestringNoTítulo superpuesto sobre el banner.
header.text.image.urlstringNoURL de una imagen de logo superpuesta en el área de texto.
header.text.image.altstringNoTexto alternativo de la imagen del logo.
header.text.descriptionstringNoSubtítulo o descripción superpuesta sobre el banner.
header.link.urlstringNoURL de destino al hacer clic en la cabecera.
header.link.targetstringNo"_self" o "_blank".
header.contentobjectContenido del banner: imagen o vídeo. Ver formatos a continuación.

Contenido de cabecera

{
"type": "image",
"alt": "Texto alternativo de la imagen",
"file": {
"mobile": "pages/collections/banner-mobile.jpg?$staticlink$",
"desktop": "pages/collections/banner-desktop.jpg?$staticlink$"
}
}
PropiedadTipoDescripción
typestringSiempre "image".
altstringTexto alternativo (accesibilidad y SEO).
file.mobilestringRuta de la imagen en móvil. Debe terminar en ?$staticlink$.
file.desktopstringRuta de la imagen en escritorio. Debe terminar en ?$staticlink$.

Grupos e ítems

PropiedadTipoObligatorioDescripción
groups[].gapbooleanNoSi true, añade separación entre los ítems del grupo.
groups[].style.backgroundstringNoColor de fondo (hex) aplicado a toda la cuadrícula del grupo, detrás de todos sus ítems.
groups[].itemsarrayÍtems del grupo.
items[].columnsnumberNoNúmero de columnas que ocupa el ítem en la cuadrícula. Por defecto 1.
items[].rowsnumberNoNúmero de filas que ocupa el ítem en la cuadrícula. Por defecto 1.
items[].link.urlstringNoURL de destino. Admite expresiones $url de SFCC. Si está vacío, el ítem no es clicable.
items[].link.targetstringNo"_self" o "_blank".
items[].typestringTipo del ítem: "product", "image", "video" o "text".
items[].contentobjectContenido del ítem. La estructura varía según type. Ver tabla por tipo a continuación.

Contenido de ítem

{
"id": "HK-ONE-SUNGLASSES-001",
"image_1": "pages/collections/custom-front.jpg?$staticlink$",
"image_2": "pages/collections/custom-side.jpg?$staticlink$",
"style": {
"border": {
"width": "0.6px",
"color": "#000000"
}
}
}
PropiedadTipoDescripción
idstringID del producto en SFCC. El tile usa los datos del catálogo (precio, disponibilidad, etc.).
image_1stringImagen frontal personalizada (sobreescribe la del catálogo). Termina en ?$staticlink$.
image_2stringImagen lateral/hover personalizada (sobreescribe la del catálogo). Termina en ?$staticlink$.
style.border.widthstringGrosor del borde aplicado a la imagen del producto (ej. "0.6px", "1px"). Opcional.
style.border.colorstringColor del borde (hex) aplicado a la imagen del producto. Opcional.

Landing (landing)

PropiedadTipoObligatorioDescripción
landing.contentAssetIdstringID del content asset que se incrusta en la zona de landing.
landing.button.text.topstringNoTexto del botón CTA que aparece encima del content asset incrustado.
landing.button.text.bottomstringNoTexto del botón CTA que aparece debajo del content asset incrustado.
landing.button.color.textstringNoColor del texto del botón.
landing.button.color.backgroundstringNoColor de fondo del botón.
landing.button.color.borderstringNoColor del borde del botón.
landing.button.color.hover.*objectNoMismas propiedades (text, background, border) para el estado hover.

Notas y consejos

Fichero de plantilla

pages/collections.isml

Coordina las tres zonas (header, groups, landing) e incluye las subplantillas correspondientes para cada tipo de ítem y de contenido.

Expresiones $url para los enlaces

Usa expresiones $url de SFCC para garantizar que los enlaces funcionen en todos los entornos (sandbox, staging, producción):

"url": "$url('Search-Show', 'cgid', 'ID_DE_CATEGORIA')$"
"url": "$url('Product-Show', 'pid', 'ID_DE_PRODUCTO')$"
"url": "$url('Page-Show', 'cid', 'ID_DE_PAGINA')$"
Vídeos: autoplay requiere muted: true

Los navegadores modernos bloquean el autoplay de vídeos con audio. Para que autoplay: true funcione, muted debe ser true. El usuario puede activar el audio manualmente si se muestran los controles.

Vídeos MP4 en ítems del grid: no usan $staticlink$

Las URLs de los ficheros MP4 en ítems de tipo video (campo file.mobile y file.desktop) son URLs absolutas directas y no llevan ?$staticlink$. Las imágenes de portada (poster) sí la llevan porque son recursos estáticos del cartucho.

columns y rows para construir layouts asimétricos

Combinando columns y rows puedes crear composiciones editoriales complejas — por ejemplo, un bloque 2×2 junto a dos bloques 1×1 apilados:

{ "columns": 2, "rows": 2, "type": "image", ... },
{ "columns": 1, "rows": 1, "type": "product", ... },
{ "columns": 1, "rows": 1, "type": "text", ... }
La landing incrusta otro content asset

landing.contentAssetId referencia un content asset independiente (por ejemplo, un grid adicional de productos) que se renderiza dentro de la landing. Los botones CTA arriba y abajo dan acceso a la categoría o página destino. Si contentAssetId está vacío, la zona de landing no se renderiza.