Une collection définit un type de contenu et le formulaire que les éditeurs utilisent pour le créer. Ses champs définissent les valeurs que chaque entrée peut contenir. Par exemple, une collection Produits pourrait contenir un titre, un prix, une description, une image de produit et une référence à une entrée Marque.
Les administrateurs gèrent les collections sous Types de contenu. Les fichiers seed peuvent définir les mêmes paramètres de collection lorsqu’un site ou un environnement est configuré à partir de la configuration.
Identité de la collection
Chaque collection a un libellé pluriel, un libellé singulier optionnel et un slug. Les libellés apparaissent dans le panneau d’administration. Le slug identifie la collection dans les requêtes, les routes API, les fichiers seed et la base de données.
Par exemple, une collection libellée Articles du Blog peut utiliser Article du Blog comme libellé singulier et posts comme slug. Le code Astro l’interroge ensuite par ce slug :
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
Choisissez le slug avant de créer la collection. Le panneau d’administration ne renomme pas les slugs de collection ou de champ par la suite car les requêtes existantes et les colonnes stockées en dépendent. Les slugs commencent par une lettre minuscule, contiennent uniquement des lettres minuscules, des chiffres et des underscores, et ont un maximum de 63 caractères. EmDash rejette aussi les noms réservés utilisés par ses propres routes et données d’entrée.
Comportement de la collection
Les paramètres de collection contrôlent comment les éditeurs et les pages publiques utilisent les entrées :
- Routable exige un slug public avant qu’une entrée puisse être publiée. Un modèle d’URL peut combiner le slug ou l’ID de l’entrée avec sa date de publication pour produire le chemin public.
- Brouillons permet aux éditeurs de sauvegarder leur travail avant publication.
- Révisions conserve des instantanés de l’historique du contenu.
- Aperçu fournit des URLs d’aperçu signées pour le contenu non publié.
- Recherche active la recherche plein texte pour les champs marqués comme recherchables.
- SEO ajoute des champs de métadonnées titre, description et image et inclut la collection dans le sitemap.
- Verrouillage d’édition retient une entrée pendant qu’un éditeur travaille dessus et refuse les autres rédacteurs jusqu’à ce que le verrou soit libéré.
- Commentaires peuvent être activés par collection, avec des paramètres de modération et de fermeture automatique.
- Groupe place la collection dans un dossier réductible de la barre latérale. Les collections avec le même groupe partagent un dossier, positionné là où la première d’entre elles apparaîtrait. Une taxonomie rejoint le dossier quand chaque collection à laquelle elle est assignée est affichée dans ce dossier.
Activez le comportement que le site utilise réellement. Par exemple, activer Aperçu fournit des URLs d’aperçu, mais la page Astro doit quand même rendre l’entrée et son état d’aperçu correctement. Voir Mode aperçu pour le flux complet.
Types de champs
Choisissez un type de champ pour la valeur que les éditeurs saisissent et la façon dont le code de l’application la reçoit. EmDash prend en charge 16 types de champs :
| Besoin de contenu | Types de champs | Avec quoi les éditeurs travaillent |
|---|---|---|
| Texte court ou long | string, text, slug, url | Champs de texte, zones de texte et valeurs URL |
| Nombres | number, integer | Entrées décimales ou entières |
| État et temps | boolean, datetime | Un interrupteur ou sélecteur de date et heure |
| Choix fixes | select, multiSelect | Un ou plusieurs choix parmi les options configurées |
| Données riches ou structurées | portableText, json, repeater | Texte riche, JSON ou un groupe répété de sous-champs |
| Médias | image, file | Un élément sélectionné depuis la bibliothèque de médias |
| Relations | reference | Une entrée sélectionnée depuis une autre collection |
Le type est plus qu’un contrôle d’éditeur. Il détermine aussi comment EmDash stocke et valide la valeur et comment les déclarations TypeScript générées la décrivent. La référence des types de champs liste la forme de valeur et les options de chaque type.
Règles de champs
Chaque champ personnalisé a un libellé et un slug. Les options suivantes décrivent davantage son comportement :
- Obligatoire empêche la sauvegarde d’une entrée sans valeur.
- Unique empêche deux entrées de la collection d’utiliser la même valeur.
- Valeur par défaut fournit une valeur de départ quand c’est approprié.
- Validation peut limiter la longueur du texte, les plages de nombres, les motifs, les choix, les types de fichiers ou la longueur du répéteur selon le type de champ.
- Recherchable inclut les champs de texte pris en charge dans l’index de recherche plein texte de la collection.
- Indexé crée un index de base de données pour le tri ou le filtrage sur un champ pris en charge.
- Traduisible contrôle si chaque locale a sa propre valeur. Une valeur non traduisible est partagée entre les traductions de la même entrée.
Activez Indexé quand une requête trie ou filtre par ce champ personnalisé. L’index aide la base de données à trouver des entrées correspondantes ou ordonnées, mais il utilise du stockage supplémentaire et ajoute du travail chaque fois que du contenu est créé ou mis à jour. N’indexez pas un champ uniquement parce qu’une page l’affiche.
Les index sont disponibles pour les champs string, url, number, integer, boolean, datetime, select, reference et slug. Le texte riche, le JSON, les répéteurs et les valeurs à choix multiples contiennent des données plus complexes et ne peuvent pas utiliser ce type d’index.
Les références stockent l’ID de l’entrée cible. Configurez une référence avec la collection cible et activez les valeurs multiples uniquement quand le champ doit contenir plusieurs IDs d’entrée. Une référence permet au code de charger ou d’identifier du contenu associé ; elle ne copie pas l’entrée cible dans l’entrée source.
Modifier des champs par la suite
Les libellés, la validation, les paramètres de recherche, les index, les options de widget et l’ordre d’affichage peuvent changer sans remplacer le champ. L’ajout d’un champ conserve chaque entrée existante, bien que ces entrées aient besoin d’une valeur pour le nouveau champ si le site en attend une.
La migration doit convertir les valeurs existantes, mettre à jour le modèle et garder l’ancien et le nouveau code d’application compatibles pendant le déploiement. Suivez Faire évoluer le schéma d’un site déployé avant d’effectuer un de ces changements.
Tâches associées
Utilisez Travailler avec le contenu pour créer et publier des entrées. Utilisez Interroger le contenu pour les filtrer et les trier. Lisez Modèle de contenu pour les types générés et les fichiers seed.