Una colección define un tipo de contenido y el formulario que los editores usan para crearlo. Sus campos definen los valores que cada entrada puede contener. Por ejemplo, una colección de Productos podría contener un título, precio, descripción, imagen del producto y una referencia a una entrada de Marca.
Los administradores gestionan las colecciones bajo Tipos de contenido. Los archivos seed pueden definir las mismas configuraciones de colección cuando un sitio o entorno se configura desde la configuración.
Identidad de la colección
Cada colección tiene una etiqueta plural, una etiqueta singular opcional y un slug. Las etiquetas aparecen en el panel de administración. El slug identifica la colección en consultas, rutas de API, archivos seed y la base de datos.
Por ejemplo, una colección etiquetada como Publicaciones del Blog puede usar Publicación del Blog como su etiqueta singular y posts como su slug. El código Astro la consulta por ese slug:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
Elige el slug antes de crear la colección. El panel de administración no renombra los slugs de colección ni los slugs de campo después porque las consultas existentes y las columnas almacenadas dependen de ellos. Los slugs comienzan con una letra minúscula, contienen solo letras minúsculas, números y guiones bajos, y tienen un máximo de 63 caracteres. EmDash también rechaza nombres reservados usados por sus propias rutas y datos de entrada.
Comportamiento de la colección
Las configuraciones de colección controlan cómo los editores y las páginas públicas usan las entradas:
- Enrutable requiere un slug público antes de que una entrada pueda ser publicada. Un patrón de URL puede combinar el slug o ID de la entrada con su fecha de publicación para producir la ruta pública.
- Borradores permite a los editores guardar trabajo antes de publicarlo.
- Revisiones mantiene instantáneas del historial de contenido.
- Vista previa proporciona URLs de vista previa firmadas para contenido no publicado.
- Búsqueda habilita la búsqueda de texto completo para campos marcados como buscables.
- SEO agrega campos de metadatos de título, descripción e imagen e incluye la colección en el sitemap.
- Bloqueo de edición retiene una entrada mientras un editor está trabajando y rechaza a otros escritores hasta que el bloqueo se libera.
- Comentarios se pueden habilitar por colección, con configuraciones de moderación y cierre automático.
- Grupo coloca la colección en una carpeta colapsable de la barra lateral. Las colecciones con el mismo grupo comparten una carpeta, posicionada donde la primera de ellas aparecería. Una taxonomía se une a la carpeta cuando cada colección a la que está asignada se muestra en esa carpeta.
Habilita el comportamiento que el sitio realmente usa. Por ejemplo, activar Vista previa proporciona URLs de vista previa, pero la página Astro aún debe renderizar la entrada y su estado de vista previa correctamente. Consulta Modo de vista previa para el flujo completo.
Tipos de campos
Elige un tipo de campo para el valor que los editores ingresan y la forma en que el código de la aplicación lo recibe. EmDash soporta 16 tipos de campos:
| Necesidad de contenido | Tipos de campo | Con qué trabajan los editores |
|---|---|---|
| Texto corto o largo | string, text, slug, url | Entradas de texto, áreas de texto y valores URL |
| Números | number, integer | Entradas decimales o de números enteros |
| Estado y tiempo | boolean, datetime | Un interruptor o selector de fecha y hora |
| Opciones fijas | select, multiSelect | Una o varias opciones de las configuradas |
| Datos ricos o estructurados | portableText, json, repeater | Texto enriquecido, JSON o un grupo repetido de subcampos |
| Medios | image, file | Un elemento seleccionado de la biblioteca de medios |
| Relaciones | reference | Una entrada seleccionada de otra colección |
El tipo es más que un control del editor. También determina cómo EmDash almacena y valida el valor y cómo las declaraciones TypeScript generadas lo describen. La referencia de tipos de campo lista la forma del valor y las opciones de cada tipo.
Reglas de campos
Cada campo personalizado tiene una etiqueta y un slug. Las siguientes opciones describen su comportamiento adicional:
- Obligatorio impide guardar una entrada sin un valor.
- Único impide que dos entradas en la colección usen el mismo valor.
- Valor predeterminado proporciona un valor inicial cuando es apropiado.
- Validación puede limitar la longitud del texto, rangos de números, patrones, opciones, tipos de archivo o longitud de repetidor según el tipo de campo.
- Buscable incluye campos de texto soportados en el índice de búsqueda de texto completo de la colección.
- Indexado crea un índice de base de datos para ordenar o filtrar por un campo soportado.
- Traducible controla si cada idioma tiene su propio valor. Un valor no traducible se comparte entre las traducciones de la misma entrada.
Activa Indexado cuando una consulta ordena o filtra por ese campo personalizado. El índice ayuda a la base de datos a encontrar entradas coincidentes u ordenadas, pero usa almacenamiento adicional y agrega trabajo cada vez que se crea o actualiza contenido. No indexes un campo solo porque una página lo muestra.
Los índices están disponibles para campos string, url, number, integer, boolean, datetime, select, reference y slug. Texto enriquecido, JSON, repetidores y valores de opción múltiple contienen datos más complejos y no pueden usar este tipo de índice.
Las referencias almacenan el ID de la entrada destino. Configura una referencia con la colección destino y habilita valores múltiples solo cuando el campo debe contener varios IDs de entrada. Una referencia permite al código cargar o identificar contenido relacionado; no copia la entrada destino en la entrada origen.
Cambiar campos después
Las etiquetas, validación, configuración de búsqueda, índices, opciones de widget y orden de visualización pueden cambiar sin reemplazar el campo. Agregar un campo mantiene cada entrada existente, aunque esas entradas necesitan un valor para el nuevo campo si el sitio espera uno.
La migración debe convertir los valores existentes, actualizar el modelo y mantener el código antiguo y nuevo de la aplicación compatible durante el despliegue. Sigue Evolucionar el esquema de un sitio desplegado antes de hacer uno de estos cambios.
Tareas relacionadas
Usa Trabajar con contenido para crear y publicar entradas. Usa Consultar contenido para filtrarlas y ordenarlas. Lee Modelo de contenido para tipos generados y archivos seed.