集合与字段

本页内容

集合定义了一种内容类型以及编辑者用来创建它的表单。集合的字段定义了每个条目可以包含的值。例如,一个产品集合可以包含标题、价格、描述、产品图片和对品牌条目的引用。

管理员在内容类型中管理集合。种子文件可以在从配置设置站点或环境时定义相同的集合设置。

集合标识

每个集合都有一个复数标签、一个可选的单数标签和一个 slug。标签显示在管理面板中。slug 在查询、API 路由、种子文件和数据库中标识集合。

例如,标记为博客文章的集合可以使用博客文章作为单数标签,posts 作为 slug。然后 Astro 代码通过该 slug 进行查询:

import { getEmDashCollection } from "emdash";

const { entries: posts } = await getEmDashCollection("posts");

在创建集合之前选择 slug。管理面板不会在之后重命名集合 slug 或字段 slug,因为现有查询和存储列依赖于它们。slug 以小写字母开头,仅包含小写字母、数字和下划线,最长 63 个字符。EmDash 还会拒绝其自身路由和条目数据使用的保留名称。

集合行为

集合设置控制编辑者和公开页面如何使用条目:

  • 可路由要求在条目发布之前有一个公开 slug。URL 模式可以将条目 slug 或 ID 与其发布日期组合以生成公开路径。
  • 草稿允许编辑者在发布前保存工作。
  • 修订保留内容历史的快照。
  • 预览为未发布的内容提供签名预览 URL。
  • 搜索为标记为可搜索的字段启用全文搜索。
  • SEO 添加标题、描述和图片元数据字段,并将集合包含在站点地图中。
  • 编辑锁定在编辑者工作时保留条目,并在锁定释放前拒绝其他作者。
  • 评论可以按集合启用,带有审核和自动关闭设置。
  • 分组将集合放入侧边栏的可折叠文件夹中。具有相同分组的集合共享一个文件夹,定位在第一个出现的位置。当分配给分类法的每个集合都显示在该文件夹中时,分类法也会加入该文件夹。

启用站点实际使用的行为。例如,开启预览会提供预览 URL,但 Astro 页面仍必须正确渲染条目及其预览状态。完整流程请参阅预览模式

字段类型

根据编辑者输入的值和应用程序代码接收的方式选择字段类型。EmDash 支持 16 种字段类型:

内容需求字段类型编辑者使用的控件
短文本或长文本stringtextslugurl文本输入、文本区域和 URL 值
数字numberinteger小数或整数输入
状态和时间booleandatetime开关或日期时间选择器
固定选项selectmultiSelect从配置选项中单选或多选
富文本或结构化数据portableTextjsonrepeater富文本、JSON 或子字段的重复组
媒体imagefile从媒体库中选择的项目
关系reference从另一个集合中选择的条目

类型不仅仅是编辑器控件。它还决定了 EmDash 如何存储和验证值,以及生成的 TypeScript 声明如何描述它。字段类型参考列出了每种类型的值形状和选项。

字段规则

每个自定义字段都有一个标签和一个 slug。以下选项进一步描述其行为:

  • 必填阻止在没有值的情况下保存条目。
  • 唯一阻止集合中的两个条目使用相同的值。
  • 默认值在适当时提供起始值。
  • 验证可以根据字段类型限制文本长度、数字范围、模式、选项、文件类型或重复器长度。
  • 可搜索将支持的文本字段包含在集合的全文搜索索引中。
  • 已索引为支持的字段上的排序或过滤创建数据库索引。
  • 可翻译控制每个区域设置是否有自己的值。不可翻译的值在同一条目的翻译之间共享。

当查询按该自定义字段排序或过滤时,开启已索引。索引帮助数据库找到匹配或排序的条目,但会使用额外存储,并在每次创建或更新内容时增加工作量。不要仅仅因为页面显示了某个字段就为其建立索引。

索引可用于 stringurlnumberintegerbooleandatetimeselectreferenceslug 字段。富文本、JSON、重复器和多选值包含更复杂的数据,无法使用这种索引。

引用存储目标条目的 ID。使用目标集合配置引用,仅当字段需要保存多个条目 ID 时才启用多值。引用允许代码加载或识别相关内容;它不会将目标条目复制到源条目中。

后续更改字段

标签、验证、搜索设置、索引、小部件选项和显示顺序可以在不替换字段的情况下更改。添加字段会保留每个现有条目,但如果站点期望某个值,这些条目将需要新字段的值。

迁移必须转换现有值、更新模型,并在部署期间保持旧应用程序代码和新应用程序代码的兼容性。在进行此类更改之前,请遵循部署站点的模式演进

相关任务

使用处理内容创建和发布条目。使用查询内容进行过滤和排序。阅读内容模型了解生成的类型和种子文件。