Un modèle de contenu décrit les informations que votre site stocke. Dans EmDash, le modèle est composé de collections et de champs. La base de données stocke ce modèle, et le panneau d’administration l’utilise pour construire les formulaires avec lesquels les rédacteurs travaillent.
Collections, champs et entrées
Une collection est un type de contenu, comme Articles, Produits ou Auteurs. Un champ est une information sur ce contenu, comme un titre, un corps, un prix ou une référence d’auteur. Une entrée est un élément enregistré dans une collection.
Par exemple, une collection Articles pourrait avoir ces champs :
Posts
├── Title texte court, requis
├── Excerpt texte long, optionnel
├── Content texte riche, optionnel
└── Featured image image, optionnel
EmDash gère également les informations dont chaque entrée a besoin, y compris son ID, son slug public, son état de publication, son auteur, ses dates de création et de mise à jour, sa langue et ses références de révision. Les résultats de requête exposent ces informations standard aux côtés des champs définis pour la collection.
Supprimer une entrée la déplace dans la corbeille en définissant son horodatage de suppression. Un administrateur peut la restaurer jusqu’à ce que quelqu’un la supprime définitivement de la corbeille. Ce flux de travail d’entrées est différent de la suppression d’un champ ou d’une collection, qui modifie le schéma et supprime les données stockées.
Un modèle, deux façons de le gérer
Les administrateurs peuvent créer et modifier des collections sous Types de contenu dans le panneau d’administration. EmDash met à jour le schéma de la base de données, et l’éditeur de contenu utilise le changement lors du prochain chargement de la collection.
Un fichier seed décrit un modèle de départ en JSON. Les modèles utilisent des seeds pour créer des collections et d’autres données du site lors de la configuration. Les équipes peuvent également conserver un seed dans le contrôle de version et l’appliquer lors de la création d’un autre environnement. Le panneau d’administration et un seed ne créent pas de modèles séparés ; tous deux modifient le modèle stocké dans la base de données cible.
Le fragment de seed suivant définit les quatre champs personnalisés de l’exemple Articles :
{
"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 référence des fichiers seed couvre la gestion des conflits et les autres objets qu’un seed peut contenir, y compris les paramètres, taxonomies, menus, zones de widgets, redirections et contenus d’exemple.
Modifier un modèle avec du contenu existant
Ajouter une collection crée un espace vide pour de nouvelles entrées. Ajouter un champ optionnel ajoute ce champ à chaque entrée, mais les entrées existantes n’ont pas de valeur tant qu’un rédacteur ou une migration n’en fournit pas. Une valeur par défaut peut fournir la valeur initiale lorsque le champ est ajouté.
Les libellés, descriptions, règles de validation, paramètres de recherche et l’ordre des champs peuvent être mis à jour sans remplacer le champ. Les slugs de collection et de champ sont des identifiants stables : le panneau d’administration les définit à la création et ne propose pas de renommage ultérieur.
Lisez Faire évoluer le schéma d’un site déployé avant de modifier un modèle utilisé en production.
Déclarations TypeScript
EmDash peut générer des déclarations TypeScript à partir du modèle dans la base de données. Les déclarations ajoutent vos noms de collections et formes de champs aux fonctions de requête publiques, de sorte qu’une requête pour posts renvoie des entrées dont data.title, data.content et les autres champs sont connus de TypeScript.
Pendant le développement local, l’intégration Astro écrit emdash-env.d.ts et le rafraîchit après les changements de schéma. Le fichier est une sortie générée ; modifiez le modèle de contenu plutôt que la déclaration. Les flux de travail distants peuvent exécuter emdash types pour écrire .emdash/types.ts depuis le site EmDash sélectionné. Régénérez ce fichier après avoir modifié le modèle qu’il représente.
Les types générés aident le code à correspondre au schéma actuel, mais ils ne migrent pas le contenu stocké. Un changement de modèle et toute migration de contenu requise restent des opérations séparées.
Concepts connexes
Lisez Collections et champs pour les fonctionnalités de collection et les choix de champs. Lisez Panneau d’administration pour le modèle d’éditeur et de permissions.