Saltar a contenido

RF-003 — Menú de navegación del storefront

Estado Implementado — propuesto su reemplazo por RF-007
Tipo Global propio
Ubicación src/MainNavigation/config.ts · slug main-navigation
Depende de RF-000 · destinos — RF-005

Requisito

Administrar desde el CMS la barra de navegación del storefront —los accesos que aparecen debajo del encabezado—, permitiendo que cada ítem apunte a un filtro de productos, a una página del CMS o a una URL libre; y habilitar el resaltado, la etiqueta promocional y la ocultación temporal de cada ítem sin eliminarlo.

Solución adoptada

Modelar la navegación como global de lectura pública —existe una sola instancia y siempre está disponible— con un arreglo ordenado de ítems. No confundir con los globales header y footer, que pertenecen al sitio público heredado del template y no alimentan al storefront.

flowchart TD
    G[(main-navigation · global)] --> I[items · arreglo ordenado]
    I --> T{destinationType}
    T -->|filter| F[filterType + filterValue<br/>resuelto contra Algolia por el storefront]
    T -->|page| P[relación → pages]
    T -->|custom| U[URL libre]
    I --> V[isVisible · highlight · badgeText]

Modelo de datos

Campo Tipo Regla
label texto Requerido. Texto visible del ítem
destinationType radio Requerido. filter por defecto, page o custom
filterType select Solo con destino filter: categoría, etiqueta, colección o personalizado
filterValue texto Valor buscado; admite varios separados por coma
filterQuery textarea Consulta JSON de Algolia, solo para el filtro personalizado
page relación → pages Solo con destino page
customUrl texto Solo con destino custom
badgeText texto Etiqueta opcional sobre el ítem
highlight checkbox Resalta el ítem
isVisible checkbox Verdadero por defecto
categories texto [Obsoleto] — oculto, reemplazado por el sistema de filtros

Reglas de negocio

  • Exponer el global con lectura pública: es contrato con el storefront.
  • Condicionar la visibilidad de los campos al tipo de destino elegido, de modo que el editor solo complete lo pertinente.
  • Ocultar un ítem con isVisible en lugar de eliminarlo, para conservar su configuración.
  • Delegar la resolución del filtro al storefront: el CMS almacena un descriptor y nunca consulta el catálogo.
  • Identificar cada fila en el panel con una etiqueta derivada de su contenido.

Criterios de aceptación

# Criterio
1 Recuperar el menú completo por API sin autenticación
2 Crear un ítem por cada tipo de destino y ver solo los campos correspondientes en el panel
3 Reordenar los ítems por arrastre y ver el nuevo orden en la respuesta
4 Ocultar un ítem sin perder su configuración y volver a exhibirlo

Limitaciones conocidas

  • Usar para el destino personalizado el valor custom, mientras otras definiciones equivalentes usan index — ver RF-005.
  • Convivir con los globales header y footer del template, que no cumplen función en el storefront y pueden confundir al editor.