Saltar al contenido principal

Navigation Menus

CampoValor
Handleradmin/handlers/navigation.go
Ruta base/admin/navigation
Modelonavigation_menus, navigation_menu_items
EstadoImplementado

Descripción

El módulo de navegación permite crear y gestionar menús de navegación para la tienda. Soporta menús jerárquicos (padre-hijo), megamenús con feature cards, y múltiples menús independientes (header, footer, sidebar).


Endpoints

Menús

MétodoRutaAcción
GET/admin/navigationListar menús
POST/admin/navigationCrear menú
GET/admin/navigation/:idEditar menú
PUT/admin/navigation/:idActualizar menú
DELETE/admin/navigation/:idEliminar menú

Items

MétodoRutaAcción
POST/admin/navigation/:id/itemsAgregar item
PUT/admin/navigation/:id/items/:item_idActualizar item
DELETE/admin/navigation/:id/items/:item_idEliminar item
POST/admin/navigation/:id/items/reorderReordenar items
POST/admin/navigation/:id/items/:item_id/childrenAgregar sub-item

Campos

CampoTipoDescripción
idUUIDIdentificador único
tenant_idUUIDTenant propietario
handlestringSlug único (auto-generado)
namestringNombre del menú
created_attimestampFecha de creación
updated_attimestampÚltima actualización
item_countintConteo de items raíz (computed)
CampoTipoDescripción
idUUIDIdentificador único
menu_idUUIDMenú padre
parent_idUUID?Item padre (null = raíz)
labelstringTexto visible
urlstring?URL del enlace
typeenumpage, collection, product, custom, heading
page_idUUID?Referencia a página CMS
positionintOrden dentro del padre
open_new_tabboolAbrir en nueva pestaña
feature_image_urlstring?Imagen para megamenú
feature_titlestring?Título del feature card
feature_urlstring?URL del feature card

Jerarquía

Los items se cargan como estructura plana desde la BD y se construye el árbol en memoria:

Menu "Principal"
├── Inicio (page)
├── Tienda (collection)
│ ├── Ropa (collection)
│ ├── Accesorios (collection)
│ └── [Feature Card: Nueva Colección]
├── Blog (custom: /blog)
└── Contacto (page)

Notas

  • El handle se auto-genera del nombre con slugifyHandle() (reemplaza acentos, espacios, caracteres especiales)
  • Los items de tipo heading sirven como separadores en megamenús
  • Los feature cards son opcionales y se usan para banners promocionales en megamenús
  • La reordenación se hace con position (enteros) y se recalculará al guardar