Files
mercadodevida/work/artifacts/F-128/implementer.md
2026-08-21 18:00:22 +02:00

1.9 KiB

F-128 — CMS plantillas: contenido por defecto editable

Cambios

apps/admin/src/app/(dashboard)/cms/page.tsx

  • Añadido defaultBody (HTML) a cada uno de los 4 templates en el array TEMPLATES:
    • home: bienvenida + descripción de envío
    • products: intro sobre filtros y atributos
    • categories: intro sobre las categorías principales
    • brands: intro sobre las marcas
  • openTemplate(tpl) modificado: cuando no existe CMS page para el slug, ahora pre-rellena form.body = tpl.defaultBody (antes era '').
 const openTemplate = (tpl: typeof TEMPLATES[number]) => {
   const existing = items.find(p => p.slug === tpl.slug);
   if (existing) { openEdit(existing); return; }
   setEditing(null);
-  setForm({ slug: tpl.slug, title: tpl.defaultTitle, body: '' });
+  setForm({ slug: tpl.slug, title: tpl.defaultTitle, body: tpl.defaultBody });
   setShowForm(true);
 };

Por qué defaultBody y no auto-crear la página

  • El operador debe poder revisar/ajustar el contenido antes de guardarlo en DB.
  • Si auto-creáramos la página al abrir el template, cada apertura accidental ensucia la DB con contenido placeholder.
  • Con el body pre-rellenado, el botón Guardar se habilita (porque !form.body ya no es true) y el operador puede ajustar y guardar cuando quiera.

Verificación

  • cd apps/admin && npx tsc --noEmit → exit 0.
  • cd apps/admin && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build → exit 0.

Notas

  • Sin cambios en backend: el endpoint /api/cms/pages ya devuelve body correctamente para las páginas existentes (privacy, terms, etc.).
  • Las 6 páginas existentes (about, contact, cookies, privacy, shipping, terms) no se ven afectadas: siguen apareciendo en la lista inferior con su contenido real.
  • El operador debe reiniciar el admin (./scripts/monolith.sh prod restart) para desplegar el nuevo CMS.