集合定义了一种内容类型以及编辑者用于创建它的表单。其字段定义每个条目可以包含的值。例如,产品集合可以包含标题、价格、描述、产品图片以及对品牌条目的引用。
管理员在内容类型下管理集合。当从配置设置站点或环境时,种子文件可以定义相同的集合设置。
集合标识
每个集合都有一个复数标签、一个可选的单数标签和一个 slug。标签显示在管理面板中。slug 在查询、API 路由、种子文件和数据库中标识集合。
例如,标记为博客文章的集合可以使用博客文章作为其单数标签,使用 posts 作为其 slug。然后 Astro 代码通过该 slug 查询它:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
在创建集合之前选择 slug。管理面板稍后不会重命名集合 slug 或字段 slug,因为现有查询和存储的列依赖于它们。slug 以小写字母开头,仅包含小写字母、数字和下划线,最多 63 个字符。EmDash 还会拒绝其自己的路由和条目数据使用的保留名称。
集合行为
集合设置控制编辑者和公开页面如何使用条目:
- Routable 要求在条目可以发布之前有一个公开 slug。URL 模式可以将条目 slug 或 ID 与其发布日期组合以生成公开路径。
- Drafts 允许编辑者在发布之前保存工作。
- Revisions 保留内容历史记录的快照。
- Preview 为未发布的内容提供签名的预览 URL。
- Search 为标记为可搜索的字段启用全文搜索。
- SEO 添加标题、描述和图片元数据字段,并将集合包含在站点地图中。
- Edit locking 在一个编辑者工作时保持条目锁定,并拒绝其他作者直到锁定释放。
- Comments 可以按集合启用,具有审核和自动关闭设置。
- Group 将集合放置在可折叠的侧边栏文件夹中。具有相同组的集合共享一个文件夹,定位在其中第一个出现的位置。当分配给它的每个集合都显示在该文件夹中时,分类法加入该文件夹。
启用站点实际使用的行为。例如,打开预览会提供预览 URL,但 Astro 页面仍必须正确渲染条目及其预览状态。有关完整流程,请参阅预览模式。
字段类型
为编辑者输入的值以及应用程序代码接收它的方式选择字段类型。EmDash 支持 17 种字段类型:
| 内容需求 | 字段类型 | 编辑者使用的内容 |
|---|---|---|
| 短文本或长文本 | string, text, slug, url | 文本输入、文本区域和 URL 值 |
| 数字 | number, integer | 十进制或整数输入 |
| 状态和时间 | boolean, datetime | 开关或日期时间选择器 |
| 固定选项 | select, multiSelect | 从配置的选项中选择一个或多个 |
| 富文本或结构化数据 | portableText, json, repeater, blocks | 富文本、JSON、重复组或有序块组合 |
| 媒体 | image, file | 从媒体库中选择的项目 |
| 关系 | reference | 从另一个集合中选择的条目 |
类型不仅仅是编辑器控件。它还决定 EmDash 如何存储和验证值,以及生成的 TypeScript 声明如何描述它。字段类型参考列出了每种类型的值形状和选项。
字段规则
每个自定义字段都有一个标签和一个 slug。以下选项进一步描述其行为:
- Required 防止在没有值的情况下保存条目。
- Unique 防止集合中的两个条目使用相同的值。
- Default value 在适当时提供起始值。
- Validation 可以根据字段类型限制文本长度、数字范围、模式、选择、文件类型或重复器长度。
- Searchable 将支持的文本字段包含在集合的全文搜索索引中。
- Indexed 为在支持的字段上排序或过滤创建数据库索引。
- Translatable 控制每个语言环境是否有自己的值。不可翻译的值在同一条目的翻译之间共享。
当查询按该自定义字段排序或过滤时,打开 Indexed。索引帮助数据库查找匹配或有序的条目,但它使用额外的存储空间,并在创建或更新内容时增加工作。不要仅仅因为页面显示它就索引字段。
索引可用于 string、url、number、integer、boolean、datetime、select、reference 和 slug 字段。富文本、JSON、重复器和多选值包含更复杂的数据,无法使用这种类型的索引。
引用字段不在集合自己的表中存储任何内容。使用目标集合配置它,仅当字段应链接多个条目时才允许多个值。EmDash 单独保留链接,并在 references 下而不是在 data 中返回链接的条目,因此引用允许代码加载或识别相关内容,而无需将目标条目复制到源条目中。有关存储形状和没有目标集合的字段行为,请参阅 reference,有关相关工作流程,请参阅关系。
稍后更改字段
标签、验证、搜索设置、索引、小部件选项和显示顺序可以在不替换字段的情况下更改。添加字段会保留每个现有条目,尽管如果站点期望一个值,那些条目需要新字段的值。
迁移必须转换现有值、更新模型,并在部署期间保持旧应用程序代码和新应用程序代码兼容。在进行这些更改之一之前,请遵循演化已部署站点的架构。