Eine Sammlung definiert eine Art von Inhalt und das Formular, das Redakteure verwenden, um ihn zu erstellen. Ihre Felder definieren die Werte, die jeder Eintrag enthalten kann. Beispielsweise könnte eine Produkte-Sammlung einen Titel, einen Preis, eine Beschreibung, ein Produktbild und einen Verweis auf einen Marken-Eintrag enthalten.
Administratoren verwalten Sammlungen unter Content Types. Seed-Dateien können dieselben Sammlungseinstellungen definieren, wenn eine Site oder Umgebung aus der Konfiguration eingerichtet wird.
Sammlungsidentität
Jede Sammlung hat ein Plural-Label, ein optionales Singular-Label und einen Slug. Labels erscheinen im Admin-Panel. Der Slug identifiziert die Sammlung in Abfragen, API-Routen, Seed-Dateien und der Datenbank.
Beispielsweise kann eine Sammlung mit dem Label Blog-Beiträge Blog-Beitrag als Singular-Label und posts als Slug verwenden. Astro-Code fragt sie dann über diesen Slug ab:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
Wählen Sie den Slug, bevor Sie die Sammlung erstellen. Das Admin-Panel benennt Sammlungs-Slugs oder Feld-Slugs später nicht um, da vorhandene Abfragen und gespeicherte Spalten davon abhängen. Slugs beginnen mit einem Kleinbuchstaben, enthalten nur Kleinbuchstaben, Zahlen und Unterstriche und haben maximal 63 Zeichen. EmDash lehnt auch reservierte Namen ab, die von seinen eigenen Routen und Eintragsdaten verwendet werden.
Sammlungsverhalten
Sammlungseinstellungen steuern, wie Redakteure und öffentliche Seiten die Einträge verwenden:
- Routable erfordert einen öffentlichen Slug, bevor ein Eintrag veröffentlicht werden kann. Ein URL-Muster kann den Eintrags-Slug oder die ID mit dem Veröffentlichungsdatum kombinieren, um den öffentlichen Pfad zu erzeugen.
- Drafts ermöglicht es Redakteuren, Arbeiten vor der Veröffentlichung zu speichern.
- Revisions behält Schnappschüsse der Inhaltshistorie bei.
- Preview stellt signierte Vorschau-URLs für unveröffentlichte Inhalte bereit.
- Search aktiviert die Volltextsuche für Felder, die als durchsuchbar markiert sind.
- SEO fügt Titel-, Beschreibungs- und Bild-Metadatenfelder hinzu und schließt die Sammlung in die Sitemap ein.
- Edit locking hält einen Eintrag, während ein Redakteur daran arbeitet, und lehnt andere Autoren ab, bis die Sperre aufgehoben wird.
- Comments können pro Sammlung aktiviert werden, mit Moderations- und automatischen Schließeinstellungen.
- Group platziert die Sammlung in einem ausklappbaren Sidebar-Ordner. Sammlungen mit derselben Gruppe teilen sich einen Ordner, der dort positioniert wird, wo der erste von ihnen erscheinen würde. Eine Taxonomie tritt dem Ordner bei, wenn jede Sammlung, der sie zugewiesen ist, in diesem Ordner angezeigt wird.
Aktivieren Sie Verhalten, das die Site tatsächlich verwendet. Beispielsweise liefert das Aktivieren von Preview Vorschau-URLs, aber die Astro-Seite muss den Eintrag und seinen Vorschauzustand dennoch korrekt rendern. Siehe Vorschaumodus für diesen vollständigen Ablauf.
Feldtypen
Wählen Sie einen Feldtyp für den Wert, den Redakteure eingeben, und die Art und Weise, wie Anwendungscode ihn erhält. EmDash unterstützt 17 Feldtypen:
| Inhaltsbedarf | Feldtypen | Womit Redakteure arbeiten |
|---|---|---|
| Kurzer oder langer Text | string, text, slug, url | Texteingaben, Textbereiche und URL-Werte |
| Zahlen | number, integer | Dezimal- oder Ganzzahl-Eingaben |
| Status und Zeit | boolean, datetime | Ein Schalter oder Datums- und Zeitauswahl |
| Feste Auswahlen | select, multiSelect | Eine oder mehrere Auswahlen aus konfigurierten Optionen |
| Rich oder strukturierte Daten | portableText, json, repeater, blocks | Rich-Text, JSON, wiederholte Gruppen oder eine geordnete Block-Komposition |
| Medien | image, file | Ein Element aus der Medienbibliothek ausgewählt |
| Beziehungen | reference | Ein Eintrag aus einer anderen Sammlung ausgewählt |
Der Typ ist mehr als ein Editor-Steuerelement. Er bestimmt auch, wie EmDash den Wert speichert und validiert und wie generierte TypeScript-Deklarationen ihn beschreiben. Die Feldtypen-Referenz listet die Wertform und Optionen jedes Typs auf.
Feldregeln
Jedes benutzerdefinierte Feld hat ein Label und einen Slug. Die folgenden Optionen beschreiben sein Verhalten weiter:
- Required verhindert, dass ein Eintrag ohne Wert gespeichert wird.
- Unique verhindert, dass zwei Einträge in der Sammlung denselben Wert verwenden.
- Default value liefert einen Startwert, wenn zutreffend.
- Validation kann Textlänge, Zahlenbereiche, Muster, Auswahlen, Dateitypen oder Repeater-Länge je nach Feldtyp begrenzen.
- Searchable schließt unterstützte Textfelder in den Volltextsuchindex der Sammlung ein.
- Indexed erstellt einen Datenbankindex zum Sortieren oder Filtern nach einem unterstützten Feld.
- Translatable steuert, ob jedes Locale seinen eigenen Wert hat. Ein nicht übersetzbarer Wert wird über Übersetzungen desselben Eintrags hinweg geteilt.
Aktivieren Sie Indexed, wenn eine Abfrage nach diesem benutzerdefinierten Feld sortiert oder filtert. Der Index hilft der Datenbank, übereinstimmende oder geordnete Einträge zu finden, verwendet aber zusätzlichen Speicher und fügt Arbeit hinzu, wenn Inhalte erstellt oder aktualisiert werden. Indizieren Sie ein Feld nicht nur, weil eine Seite es anzeigt.
Indizes sind für string, url, number, integer, boolean, datetime, select, reference und slug-Felder verfügbar. Rich-Text, JSON, Repeater und Mehrfachauswahl-Werte enthalten komplexere Daten und können diese Art von Index nicht verwenden.
Ein Referenzfeld speichert nichts in der eigenen Tabelle der Sammlung. Konfigurieren Sie es mit der Zielsammlung und erlauben Sie mehrere Werte nur, wenn das Feld mehrere Einträge verknüpfen soll. EmDash behält die Links separat und gibt die verknüpften Einträge unter references anstatt in data zurück, sodass eine Referenz Code ermöglicht, verwandte Inhalte zu laden oder zu identifizieren, ohne den Zieleintrag in den Quelleintrag zu kopieren. Siehe reference für die gespeicherte Form und das Verhalten eines Feldes ohne Zielsammlung, und Beziehungen für den Arbeitsablauf darum herum.
Felder später ändern
Labels, Validierung, Sucheinstellungen, Indizes, Widget-Optionen und Anzeigereihenfolge können sich ändern, ohne das Feld zu ersetzen. Das Hinzufügen eines Feldes behält jeden vorhandenen Eintrag bei, obwohl diese Einträge einen Wert für das neue Feld benötigen, wenn die Site einen erwartet.
Die Migration muss vorhandene Werte konvertieren, das Modell aktualisieren und alten und neuen Anwendungscode während der Bereitstellung kompatibel halten. Befolgen Sie Entwicklung des Schemas einer bereitgestellten Site, bevor Sie eine dieser Änderungen vornehmen.
Verwandte Aufgaben
Verwenden Sie Mit Inhalten arbeiten, um Einträge zu erstellen und zu veröffentlichen. Verwenden Sie Inhalte abfragen, um sie zu filtern und zu sortieren. Lesen Sie Content-Modell für generierte Typen und Seed-Dateien.