3 de junio de 2026
9 min de lectura
Content modeling en PayloadCMS: colecciones, globals y relaciones que escalan
Cómo estructurar el modelo de contenido en PayloadCMS usando colecciones, globals, relaciones y tipos de campo avanzados para proyectos que crecen.
Read in EnglishColecciones vs Globals: cuándo usar cada uno
En Payload, una Collection es un tipo de contenido del que pueden existir múltiples instancias: artículos, productos, usuarios, categorías. Un Global es un tipo del que existe exactamente una instancia: la configuración del sitio, el menú de navegación, la página de inicio. Si tiene sentido tener diez instancias, es una Collection; si solo tiene sentido una, es un Global.
Un error común es modelar como Collection cosas que deberían ser Global. La configuración de redes sociales o los textos legales son Globals porque no tiene sentido tener diez versiones activas simultáneas. Modelarlos como Collection obliga a lógica extra para saber cuál es "la activa", y Payload ya resuelve ese problema con Globals.
Tipos de campo avanzados: blocks, arrays y tabs
El campo `blocks` es el más poderoso de Payload para contenido estructurado. Permite definir bloques reutilizables con su propio esquema (un bloque de texto enriquecido, un bloque de imagen con pie de foto, un bloque de CTA) y luego componer páginas mezclando esos bloques en cualquier orden. Es el equivalente de un page builder, pero controlado en código.
El campo `array` sirve cuando el contenido es una lista de elementos con la misma estructura: preguntas frecuentes, beneficios, pasos. La diferencia con `blocks` es que todos los elementos del array tienen el mismo esquema, mientras que en blocks cada bloque puede tener un esquema diferente.
Colección con relaciones, blocks y hook de auditoría.
import { CollectionConfig } from 'payload/types';
export const Posts: CollectionConfig = {
slug: 'posts',
fields: [
{ name: 'title', type: 'text', required: true },
{
name: 'author',
type: 'relationship',
relationTo: 'users',
required: true,
},
{
name: 'categories',
type: 'relationship',
relationTo: 'categories',
hasMany: true,
},
{
name: 'content',
type: 'blocks',
blocks: [RichTextBlock, ImageBlock, CallToActionBlock],
},
],
hooks: {
beforeChange: [
({ data, req }) => ({
...data,
lastEditedBy: req.user?.id ?? null,
}),
],
},
}; Relaciones y cómo evitar N+1 queries
Las relaciones en Payload se definen en el campo `relationship`. Con `hasMany: false` es una relación muchos-a-uno (un artículo pertenece a un autor). Con `hasMany: true` es muchos-a-muchos (un artículo puede tener varias categorías). Payload maneja la persistencia automáticamente.
El problema de N+1 aparece cuando Payload hace una consulta adicional por cada registro para cargar sus relaciones. La solución es usar `depth` en la query: `depth: 1` carga las relaciones directas con joins. Para listados grandes, usar `depth: 0` y cargar relaciones solo cuando sea necesario evita el problema completamente.
- Usa depth: 1 para cargar relaciones en vistas de detalle.
- Usa depth: 0 en listados para evitar queries innecesarias.
- Agrupa relaciones polimórficas con relationTo como array de slugs.
Access control integrado en el modelo
Payload permite definir control de acceso a nivel de colección, de documento y de campo con la propiedad `access`. Un campo que solo el admin puede escribir, un documento que solo su autor puede actualizar y una colección que los usuarios autenticados pueden leer pero no crear: todo se define en el mismo archivo de configuración.
Este control de acceso es más robusto que validarlo en middleware externo porque está acoplado al esquema. Si agregas un campo nuevo, el control de acceso de la colección ya aplica sin intervención adicional.
Más artículos
Volver a artículosPlataformas de pago en México: Stripe, Conekta, Mercado Pago y OpenPay
Comparativa técnica y comercial de las cuatro plataformas más usadas para aceptar pagos en proyectos digitales mexicanos.
3 de junio de 2026
7 min de lectura
Plataformas de envíos en México: Skydropx, EnviosPerros, Pakke y Enviame
Cómo elegir entre los principales agregadores de paquetería para ecommerce en México según volumen, operación y necesidades técnicas.
3 de junio de 2026
7 min de lectura
CMS headless en 2026: PayloadCMS, Strapi, Sanity y Directus
Qué CMS headless elegir según el tipo de proyecto, el control técnico que necesitas y cómo planeas modelar el contenido.
3 de junio de 2026
8 min de lectura