Loving Tina? us on GitHub0.0k

文档

学习

v.Latest
Documentation
集合
目录

每个集合都是一个独特的内容结构。在TinaCMS中创建内容文档是基于每个集合进行的,以便:

  • 内容结构与集合定义相匹配。
  • 文档存在于该集合下。

每个集合为TinaCMS编辑器定义其自己的表单字段。

这些可以在集合的fieldstemplates数组中指定。

可以设置format属性来控制在集合中创建的内容的文件类型。

对象定义

REQUIRED
name
string

集合的内部名称。


REQUIRED
path
string

确定此集合中文档的存储位置。


format
"md" | "markdown" | "mdx" | "json" | "toml" | "yaml"

内容文件的扩展名和格式。

Default is "md".

label
string

在编辑器中显示的集合名称。


fields
Field[]

一个字段数组。


templates
Template[]

一个模板数组。


default​Item
object | function

定义新创建文档中的预填充数据。


frontmatter​Format
"yaml" | "toml" | "json"

用于解析前置数据的格式。

Default is "yaml".

frontmatter​Delimiters
string | [string, string]

用于前置数据的分隔符

Default is "---".

All properties marked as REQUIRED must be specified for the field to work properly.

必须仅提供字段或模板之一。

名称

name定义了在GraphQL模式中使用的集合名称。

对于每个集合应该是唯一的。

我们建议在集合中使用单数命名(post,而不是posts)。

此名称不能包含空格、破折号或特殊字符。

路径

path让Tina知道哪些目录包含集合的文档。

格式匹配属性可以进一步指定包含的文档。

不同集合的文档可以共存,但如果有重叠的文档,CLI将打印警告。

默认情况下,路径是相对于CLI运行的位置,但可以通过使用--rootPath CLI标志进行更改。

文件格式

格式定义了此集合中文档的文件扩展名。设置为"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),但不包括子目录,请使用:

{
path: 'content/posts',
match: {
include: '*',
},
format: 'md'
}

要仅获取两个文件content/config/foo.jsoncontent/config/bar.json,请使用:

{
path: 'content/config',
match: {
include: '{foo,bar}',
},
format: 'json'
}

match.exclude

这与match.include的工作方式相同,但会排除与模式匹配的任何文件。排除您不想编辑的文件,或属于不同集合的文件。

最终排除的文件集由!(<path>/<match.exclude>.<format>)定义。

要从集合中排除所有index.md文件,请使用:

{
path: 'content/posts',
match: {
exclude: '**/index',
},
format: 'md'
}

定义默认值

defaultItem属性定义了在文档创建时应该存在的数据。默认项是一个函数,接收collection并返回默认项。

默认项的所有属性应对应于集合中定义的字段。

defaultItem: () => {
return {
{{field name}}: {{value}}
}
}

对象的默认值

对象字段类型独立定义其默认值。更多信息请参见此处。

富文本的默认值

要设置富文本字段的默认值,您必须提供一个抽象语法树(AST)。更多信息请参见此处。

示例

简单的markdown集合

默认情况下,集合中的文件将采用markdown格式。

export default defineConfig({
//...
schema: {
collections: [
{
name: 'posts',
label: '博客文章',
path: 'content/posts',
fields: [
// 一个字段数组
],
},
],
},
});

具有受限文件管理权限的JSON集合

允许的操作属性控制用户是否可以从集合页面创建、删除和组织内容文件。

export default defineConfig({
//...
schema: {
collections: [
{
label: '导航',
name: 'navigation',
path: 'content/navigation',
ui: {
// 不允许编辑者创建新的导航项
allowedActions: {
create: false,
delete: false,
createNestedFolder: false,
},
},
format: 'json',
fields: [
// 一个字段数组
],
},
],
},
});

具有默认标题的Markdown集合

export default defineConfig({
// ...
schema: {
collections: [
{
label: '博客文章',
name: 'post',
path: 'content/posts',
defaultItem: () => {
return {
// 当创建新文章时,标题字段将设置为"新文章"
title: '新文章',
};
},
fields: [
{
type: 'string',
label: '标题',
name: 'title',
},
],
},
],
},
});
上次编辑: March 26, 2025