Un modelo de contenido describe la información que almacena tu sitio. En EmDash, el modelo está compuesto por colecciones y campos. La base de datos almacena ese modelo, y el panel de administración lo usa para construir los formularios con los que trabajan los editores.
Colecciones, campos y entradas
Una colección es un tipo de contenido, como Publicaciones, Productos o Autores. Un campo es una pieza de información de ese contenido, como un título, cuerpo, precio o referencia de autor. Una entrada es un elemento guardado en una colección.
Por ejemplo, una colección de Publicaciones podría tener estos campos:
Posts
├── Title texto corto, requerido
├── Excerpt texto largo, opcional
├── Content texto rico, opcional
└── Featured image imagen, opcional
EmDash también gestiona la información que cada entrada necesita, incluyendo su ID, slug público, estado de publicación, autor, tiempos de creación y actualización, idioma y referencias de revisión. Los resultados de las consultas exponen esta información estándar junto con los campos definidos para la colección.
Eliminar una entrada la mueve a la papelera estableciendo su tiempo de eliminación. Un administrador puede restaurarla hasta que alguien la elimine permanentemente de la papelera. Este flujo de trabajo de entradas es diferente de eliminar un campo o una colección, que cambia el esquema y elimina datos almacenados.
Un modelo, dos formas de gestionarlo
Los administradores pueden crear y editar colecciones en Tipos de contenido en el panel de administración. EmDash actualiza el esquema de la base de datos, y el editor de contenido usa el cambio la próxima vez que carga la colección.
Un archivo seed describe un modelo inicial en JSON. Las plantillas usan seeds para crear colecciones y otros datos del sitio durante la configuración. Los equipos también pueden mantener un seed en control de versiones y aplicarlo al crear otro entorno. El panel de administración y un seed no crean modelos separados; ambos cambian el modelo almacenado en la base de datos de destino.
El siguiente fragmento de seed define los cuatro campos personalizados del ejemplo de Publicaciones:
{
"version": "1",
"collections": [
{
"slug": "posts",
"label": "Posts",
"labelSingular": "Post",
"fields": [
{
"slug": "title",
"label": "Title",
"type": "string",
"required": true
},
{ "slug": "excerpt", "label": "Excerpt", "type": "text" },
{ "slug": "content", "label": "Content", "type": "portableText" },
{ "slug": "featured_image", "label": "Featured Image", "type": "image" }
]
}
]
}
La referencia de archivos seed cubre el manejo de conflictos y los otros objetos que un seed puede contener, incluyendo configuraciones, taxonomías, menús, áreas de widgets, redirecciones y contenido de ejemplo.
Cambiar un modelo con contenido existente
Agregar una colección crea un lugar vacío para nuevas entradas. Agregar un campo opcional añade ese campo a cada entrada, pero las entradas existentes no tienen valor hasta que un editor o migración proporcione uno. Un valor predeterminado puede proporcionar el valor inicial cuando se agrega el campo.
Las etiquetas, descripciones, reglas de validación, configuraciones de búsqueda y el orden de los campos pueden actualizarse sin reemplazar el campo. Los slugs de colección y campo son identificadores estables: el panel de administración los establece en la creación y no ofrece renombrarlos después.
Lee Evolucionar el esquema de un sitio desplegado antes de cambiar un modelo usado en producción.
Declaraciones TypeScript
EmDash puede generar declaraciones TypeScript a partir del modelo en la base de datos. Las declaraciones agregan los nombres de tus colecciones y las formas de los campos a las funciones de consulta públicas, de modo que una consulta por posts devuelve entradas cuyos data.title, data.content y otros campos son conocidos por TypeScript.
Durante el desarrollo local, la integración de Astro escribe emdash-env.d.ts y lo actualiza después de cambios de esquema. El archivo es salida generada; edita el modelo de contenido en lugar de la declaración. Los flujos de trabajo remotos pueden ejecutar emdash types para escribir .emdash/types.ts desde el sitio EmDash seleccionado. Regenera ese archivo después de cambiar el modelo que representa.
Los tipos generados ayudan al código a coincidir con el esquema actual, pero no migran contenido almacenado. Un cambio de modelo y cualquier migración de contenido requerida siguen siendo operaciones separadas.
Conceptos relacionados
Lee Colecciones y campos para las características de colecciones y opciones de campos. Lee Panel de administración para el modelo de editor y permisos.