Loving Tina? us on GitHub0.0k

文档

学习

v.Latest
Documentation

字段

在此页面上

字段定义了内容结构,以及在编辑器中为特定集合显示的表单字段。

这些字段被分类为字段类型——它们决定了存储的数据以及在编辑器中显示的输入组件。

字段类型的选项包括:

基本类型定义如下所示。某些字段类型通过特定类型的选项扩展了以下类型定义。

类型定义

REQUIRED
name
string

字段的名称。


REQUIRED
type
string

决定使用的数据类型和表单字段。


label
string

在编辑器中显示的集合名称。如果省略,则使用 name


description
string

将显示给用户的关于字段的简短描述。


required
boolean

如果为 true,则在此字段没有值时禁用保存。

Default is false.

name​Override
string

控制在内容文件中使用的字段名称。


is​Title
boolean

定义字段标题。

仅限字符串字段。

Default is false.

is​Body
boolean

定义哪个字段保存到Markdown正文中。

仅限文本rich-textstring)字段。

Default is false.

options
array

将允许的值限制为给定选项。

仅限标量字段。

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

名称

用于GraphQL模式中的字段名称。

在同级字段中应是唯一的。

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

nameOverride 属性可以设置为用于替换内容文件中的字段名称。在其他情况下仍将使用实际的名称属性。

fields: [
{
name: 'my_field',
nameOverride: 'my-field',
//...
},
];

字段标题

isTitle 控制在集合页面中为文件显示哪个字段。如果从未设置,将使用文件名。

要使用此属性...

  • 保持为顶级字段(在 collections.fieldscollections.templates.fields 中定义)。
  • 在同一字段上设置 required 为 true。
  • 每个集合中仅包含一个字段。

字段(markdown)正文

通常保存在markdown文件中的内容将存储在前置部分。

isBody 控制链接到正文部分的字段。

要使用此属性...

  • 字段类型应为 rich-textstring
  • 集合应为 "mdx""md" 格式。
  • 每个集合中仅包含一个字段。

列表字段

指定 list: true 会创建一个关联字段的数组。

fields: [
{
label: 'Hero Image',
name: 'heroImage',
type: 'image',
list: true,
},
];

ui.max

对象字段类型的列表上设置 ui.max 后,一旦添加了至少给定数量的元素,编辑器中的添加按钮将被禁用。

这不支持使用模板的对象。

{
type: "object",
label: "Object List",
name: "objectList",
list: true,
ui: {
max: 3,
},
// ...
}

ui.min 

对于任何列表字段,如果设置了 ui.min,则在项目少于最小数量时,删除按钮将变灰(见下图)。

{
type: "string",
label: "Llamas",
name: "llamas",
list: true,
ui: {
min: 3,
}
}

选择字段

任何标量字段都可以接受一个 options 数组来限制允许的值。这会将编辑器组件更改为下拉菜单或复选框集。

您可以传入一个值数组,或结构为以下的对象数组:

选项属性

定义

value

与选项关联的实际值。

label

在编辑器中显示的此选项的名称。

复选框字段

通过同时使用 optionslist 属性创建一组复选框字段:

fields: [
{
name: 'categories',
type: 'string',
list: true,
options: [
{
value: 'movies',
label: 'Movies',
},
{
value: 'music',
label: 'Music',
},
//...
],
},
];

下拉字段

通过使用 options 而不使用 list 属性创建下拉字段:

fields: [
{
name: 'categories',
type: 'string',
options: [
{
value: 'movies',
label: 'Movies',
},
{
value: 'music',
label: 'Music',
},
//...
],
},
];

格式化字段值

formatparse 定义了控制渲染和保存内容的函数。

在下面的示例中,当用户输入时,他们将看到所有小写字符。当保存时,将是所有大写字符。

// ...fields
{
name: "username",
type: "string",
label: "Username",
ui: {
// 在每次表单更改时调用,但结果存储在数据中而不是表单值中(保存到文件但不显示给用户)
parse: (val?: string)=>val && val.toUpperCase(),
// 在每次表单更改时调用,结果放回表单的值中(显示给用户)
format: (val?: string)=> (val ? val.toLowerCase() : ""),
},
},

验证字段值

Tina允许使用验证函数 ui.validate 进行客户端验证。如果值无效,此函数返回一个 string 错误消息;如果字段有效,则返回 null

要在验证中包含表单的其他字段值,可以使用 allValues 参数。

不兼容引用、对象和富文本字段类型——它们有更复杂的内部结构。

{
label: "Title",
name: "title",
type: "string",
ui: {
validate: (value, allValues) => {
const titleLength = value?.length || 0
const descLength = allValues?.description?.length || 0
if (titleLength >= descLength) {
return 'The description must be longer than the title'
}
}
}
}

上次编辑: September 18, 2025