Una colección define un tipo de contenido y el formulario que los editores usan para crearlo. Sus campos definen los valores que puede contener cada entrada. Por ejemplo, una colección de Productos podría contener un título, precio, descripción, imagen del producto y referencia a una entrada de Marca.
Los administradores gestionan las colecciones en Tipos de Contenido. Los archivos seed pueden definir las mismas configuraciones de colección cuando se configura un sitio o entorno desde la configuración.
Identidad de 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 Publicaciones de Blog puede usar Publicación de Blog como su etiqueta singular y posts como su slug. El código Astro luego la consulta por ese slug:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
Elija el slug antes de crear la colección. El panel de administración no renombra slugs de colección o slugs de campo más tarde 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 colección
Las configuraciones de colección controlan cómo los editores y las páginas públicas usan las entradas:
- Routable 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.
- Drafts permite a los editores guardar trabajo antes de publicarlo.
- Revisions mantiene instantáneas del historial de contenido.
- Preview proporciona URLs de vista previa firmadas para contenido no publicado.
- Search 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 mapa del sitio.
- Edit locking mantiene una entrada mientras un editor está trabajando y rechaza otros escritores hasta que se libere el bloqueo.
- Comments pueden habilitarse por colección, con configuraciones de moderación y cierre automático.
- Group coloca la colección en una carpeta plegable de la barra lateral. Las colecciones con el mismo grupo comparten una carpeta, posicionada donde aparecería la primera de ellas. Una taxonomía se une a la carpeta cuando todas las colecciones a las que está asignada se muestran en esa carpeta.
Habilite el comportamiento que el sitio realmente usa. Por ejemplo, activar Preview proporciona URLs de vista previa, pero la página Astro aún debe renderizar la entrada y su estado de vista previa correctamente. Consulte Modo de vista previa para ese flujo completo.
Tipos de campo
Elija 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 admite 17 tipos de campo:
| 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 de 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 opciones configuradas |
| Datos ricos o estructurados | portableText, json, repeater, blocks | Texto enriquecido, JSON, grupos repetidos o una composición de bloques ordenada |
| 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 de 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 enumera la forma de valor y las opciones de cada tipo.
Reglas de campo
Cada campo personalizado tiene una etiqueta y un slug. Las siguientes opciones describen más su comportamiento:
- Required evita que una entrada se guarde sin un valor.
- Unique evita que dos entradas en la colección usen el mismo valor.
- Default value proporciona un valor inicial cuando sea apropiado.
- Validation puede limitar la longitud del texto, rangos de números, patrones, opciones, tipos de archivo o longitud de repeater según el tipo de campo.
- Searchable incluye campos de texto admitidos en el índice de búsqueda de texto completo de la colección.
- Indexed crea un índice de base de datos para ordenar o filtrar por un campo admitido.
- Translatable controla si cada configuración regional tiene su propio valor. Un valor no traducible se comparte entre traducciones de la misma entrada.
Active Indexed cuando una consulta ordene o filtre 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 el contenido. No indexe 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. El texto enriquecido, JSON, repeaters y valores de opción múltiple contienen datos más complejos y no pueden usar este tipo de índice.
Un campo de referencia no almacena nada en la propia tabla de la colección. Configúrelo con la colección de destino y permita múltiples valores solo cuando el campo deba vincular varias entradas. EmDash mantiene los enlaces por separado y devuelve las entradas vinculadas bajo references en lugar de en data, por lo que una referencia permite al código cargar o identificar contenido relacionado sin copiar la entrada de destino en la entrada de origen. Consulte reference para la forma almacenada y el comportamiento de un campo sin colección de destino, y Relaciones para el flujo de trabajo en torno a él.
Cambiar campos más tarde
Las etiquetas, validación, configuraciones 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 valores existentes, actualizar el modelo y mantener el código de aplicación antiguo y nuevo compatible durante la implementación. Siga Evolucionar el esquema de un sitio implementado antes de realizar uno de estos cambios.
Tareas relacionadas
Use Trabajar con contenido para crear y publicar entradas. Use Consultar contenido para filtrarlas y ordenarlas. Lea Modelo de contenido para tipos generados y archivos seed.