集合
每个集合都是一个独特的内容结构。在TinaCMS中创建内容文档是基于每个集合进行的,以便:
- 内容结构与集合定义相匹配。
- 文档存在于该集合下。
每个集合为TinaCMS编辑器定义其自己的表单字段。
这些可以在集合的fields或templates数组中指定。
可以设置format属性来控制在集合中创建的内容的文件类型。
对象定义
集合的内部名称。
确定此集合的文档存储位置。
内容文件的扩展名和格式。
"md".在编辑器中显示的集合名称。
字段的数组。
模板的数组。
定义新创建文档中的预填充数据。
用于解析前置数据的格式。
"yaml".分隔符用于前置数据。
"---".All properties marked as REQUIRED must be specified for the field to work properly.
必须仅提供fields或templates之一。
名称
name定义了在GraphQL模式中使用的集合名称。
对于每个集合应该是唯一的。
我们建议在集合中使用单数命名(post,而不是posts)。
此名称不能包含空格、破折号或特殊字符。
路径
path让TinaCMS知道哪些目录包含集合的文档。
不同集合的文档可以共存,但如果有重叠的文档,CLI将打印警告。
默认情况下,路径是相对于CLI运行的位置,但可以通过使用--rootPath CLI标志来更改。
在本地模式下,当更改**
path**时,您需要运行tinacms dev。这确保生成的文件包含新路径。
文件格式
Format定义了此集合中文档的文件扩展名。设置为"md"、"markdown"、"mdx"、"json"、"toml"或"yaml"之一。
如果未指定,则使用markdown文件。
路径匹配
match.include
一个glob模式,用于匹配path目录中的文件子集,不包括文件扩展名。使用此字段来排除子目录或匹配特定文件集。
?匹配单个字符*匹配任意数量的任意字符(除/外)[abc]匹配给定集合中的任意一个字符[a-z]匹配一个范围。{foo,bar}匹配给定集合中的任意一个完整单词
最终包含的文件集由<path>/<match.include>.<format>定义。
要获取post目录中的所有markdown文件(即content/posts/*.md),但不包括子目录,请使用:
要仅获取两个文件content/config/foo.json和content/config/bar.json,请使用:
match.exclude
这与match.include的工作方式相同,但会排除与模式匹配的任何文件。排除您不想编辑的文件,或属于不同集合的文件。
最终排除的文件集由!(<path>/<match.exclude>.<format>)定义。
要从集合中排除所有index.md文件,请使用:
定义默认值
defaultItem属性定义了在文档创建时应该存在的数据。默认项是一个函数,接收collection并返回默认项。
默认项的所有属性应对应于集合中定义的字段。
对象的默认值
对象字段类型独立定义其默认值。更多信息请参见此处。
富文本的默认值
要为富文本字段设置默认值,您必须提供一个抽象语法树(AST)。更多信息请参见此处。
全局集合
全局集合需要tinacms: 3.9.4或更高版本。在旧版本中,集合仍然可以工作,但它出现在常规集合列表中,而不是在站点下。
设置ui.global: true以使集合成为全局。全局集合包含一个单一的、站点范围的设置文档——例如页眉和页脚内容、导航、主题选项或SEO默认值——而不是许多文档的列表。
在编辑器中,全局集合的呈现方式与常规集合不同:
- 它在侧边栏的站点标题下出现一次(带有地球图标),而不是在主集合列表中。
- 打开它直接进入文档的表单——没有文档列表需要逐步浏览,因为全局集合旨在包含单个文档。
全局集合旨在包含单个文档。如果它包含零个或多个文档,编辑器将回退到常规列表视图。
示例
简单的markdown集合
默认情况下,集合中的文件将采用markdown格式。
具有受限文件管理权限的JSON集合
允许的操作属性控制用户是否可以从集合页面创建、删除和组织内容文件。