Saltearse al contenido

Páginas

Páginas es el CMS de lo que no es catálogo, blog ni pie de sitio: «Quiénes somos», «Términos», «Envíos». Se usa para contenido de apoyo que necesita URL propia y edición sin tocar código. Es de propósito más pequeño que el blog y esa es su ventaja: se publica sin pelear con una puerta de SEO.

  • CRUD de páginas por sitio: título, slug, contenido, estado (borrador o publicado) y bloque SEO con meta_title, meta_description, canonical_url, robots_index y og_image.
  • Feed público: GET /api/site/pages y GET /api/site/pages/{slug}. El panel trabaja sobre /api/pages.
  • El slug es único por sitio: si choca, el alta prueba slug, slug-2, slug-3 y así. Un PATCH solo lo recalcula si mandas un slug distinto del guardado; cambiar el título no lo regenera.
  • Pasar a publicado sin fecha le pone la de ahora; volver a borrador no borra la fecha del último publicado, que sirve si la republicas.
  • Es núcleo: viene en los cuatro planes y corre como módulo, con su frontera de código.
  • De dos compuertas para el feed: module:pages y token.ability:pages.
  • De un perfil de equipo. Aquí está el hueco: ningún perfil del catálogo incluye pages. Un dueño del sitio y el staff de Merez pasan; un miembro invitado con cualquier perfil recibe 403 en todo el CRUD, incluido marketing, que sí administra el blog.

No se puede apagar: es núcleo, y el panel responde 422. Si el sitio pierde el módulo, el feed devuelve 403 {"module":"pages"} y el contenido sigue guardado. Si conserva el módulo pero la credencial no trae la habilidad, el 403 dice {"ability":"pages"}. Lo publicado no se borra ni se despublica por apagar nada: la fecha de publicación se conserva.

  • No tiene, a propósito: validación de SEO bloqueante, checklist de redacción, tiempo de lectura, relacionados, redirecciones 301 ni sitemap. Si una página necesita SEO real, la señal es moverla al blog, no hacerle crecer campos.
  • robots_index existe en el modelo y hay un scope indexable(), pero el feed no lo usa. Hoy no importa porque el backend no genera sitemap.xml. Si tu sitio arma su sitemap a partir de este feed, respeta la columna o expondrás páginas marcadas como no indexables.
  • Orden de las compuertas: rol antes que módulo. No lo inviertas: si se comprueba primero el módulo, un miembro sin permiso se entera de si está encendido.
  • En el listado del panel no hay 403 por sitio: el resultado sale ya recortado, y un sitio sin páginas devuelve una lista vacía.