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 lors de la configuration d’un site ou d’un environnement à partir de la configuration.
Identité de collection
Chaque collection a un label au pluriel, un label au singulier optionnel et un slug. Les labels apparaissent dans le panneau d’administration. Le slug identifie la collection dans les requêtes, les routes d’API, les fichiers seed et la base de données.
Par exemple, une collection intitulée Articles de Blog peut utiliser Article de Blog comme label 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 les slugs de champ plus tard car les requêtes existantes et les colonnes stockées en dépendent. Les slugs commencent par une lettre minuscule, ne contiennent que des lettres minuscules, des chiffres et des traits de soulignement, et ont un maximum de 63 caractères. EmDash rejette également les noms réservés utilisés par ses propres routes et données d’entrée.
Comportement de collection
Les paramètres de collection contrôlent comment les éditeurs et les pages publiques utilisent les entrées :
- Routable nécessite 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.
- Drafts permet aux éditeurs de sauvegarder le travail avant de le publier.
- Revisions conserve des instantanés de l’historique du contenu.
- Preview fournit des URL d’aperçu signées pour le contenu non publié.
- Search active la recherche en texte intégral pour les champs marqués comme recherchables.
- SEO ajoute des champs de métadonnées de titre, description et image et inclut la collection dans le plan du site.
- Edit locking maintient une entrée pendant qu’un éditeur travaille et refuse les autres rédacteurs jusqu’à ce que le verrou soit libéré.
- Comments peuvent être activés par collection, avec des paramètres de modération et de fermeture automatique.
- Group place la collection dans un dossier pliable de la barre latérale. Les collections avec le même groupe partagent un dossier, positionné où la première d’entre elles apparaîtrait. Une taxonomie rejoint le dossier lorsque 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 Preview fournit des URL d’aperçu, mais la page Astro doit toujours afficher l’entrée et son état d’aperçu correctement. Consultez Mode aperçu pour ce flux complet.
Types de champs
Choisissez un type de champ pour la valeur que les éditeurs saisissent et la manière dont le code de l’application le reçoit. EmDash prend en charge 17 types de champs :
| Besoin de contenu | Types de champs | Ce avec quoi les éditeurs travaillent |
|---|---|---|
| Texte court ou long | string, text, slug, url | Saisies de texte, zones de texte et valeurs d’URL |
| Nombres | number, integer | Saisies décimales ou de nombres entiers |
| État et temps | boolean, datetime | Un interrupteur ou sélecteur de date et heure |
| Choix fixes | select, multiSelect | Un ou plusieurs choix parmi des options configurées |
| Données riches ou structurées | portableText, json, repeater, blocks | Texte enrichi, JSON, groupes répétés ou une composition de blocs ordonnée |
| Médias | image, file | Un élément sélectionné dans la bibliothèque multimédia |
| Relations | reference | Une entrée sélectionnée dans une autre collection |
Le type est plus qu’un contrôle d’éditeur. Il détermine également 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 champ
Chaque champ personnalisé a un label et un slug. Les options suivantes décrivent davantage son comportement :
- Required empêche une entrée d’être enregistrée sans valeur.
- Unique empêche deux entrées de la collection d’utiliser la même valeur.
- Default value fournit une valeur de départ le cas échéant.
- Validation peut limiter la longueur du texte, les plages de nombres, les modèles, les choix, les types de fichiers ou la longueur du repeater selon le type de champ.
- Searchable inclut les champs de texte pris en charge dans l’index de recherche en texte intégral de la collection.
- Indexed crée un index de base de données pour trier ou filtrer sur un champ pris en charge.
- Translatable 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 Indexed lorsqu’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 un stockage supplémentaire et ajoute du travail chaque fois que le 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 enrichi, JSON, les repeaters et les valeurs à choix multiples contiennent des données plus complexes et ne peuvent pas utiliser ce type d’index.
Un champ de référence ne stocke rien dans la propre table de la collection. Configurez-le avec la collection cible et n’autorisez plusieurs valeurs que lorsque le champ doit lier plusieurs entrées. EmDash conserve les liens séparément et renvoie les entrées liées sous references plutôt que dans data, de sorte qu’une référence permet au code de charger ou d’identifier du contenu connexe sans copier l’entrée cible dans l’entrée source. Consultez reference pour la forme stockée et le comportement d’un champ sans collection cible, et Relations pour le flux de travail autour.
Modifier les champs plus tard
Les labels, 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 maintenir le code d’application ancien et nouveau compatible pendant le déploiement. Suivez Évolution du schéma d’un site déployé avant d’effectuer l’un de ces changements.
Tâches connexes
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.