布局概念
| 概念 | 控制内容 | 实体 |
|---|---|---|
| 视图 | 对象的已保存列表配置——可见字段、顺序、筛选器、分组 | defineView |
| 导航菜单项 | 左侧侧边栏中的一项,链接到某个视图或外部 URL | defineNavigationMenuItem |
| 页面布局 | 构成记录详情页的选项卡和小部件 | definePageLayout |
| 页面布局选项卡 | 附加到现有页面布局(标准页面布局或你自己的应用的页面布局)的独立选项卡 | definePageLayoutTab |
universalIdentifier 相互引用:
- 类型为
VIEW的导航菜单项指向一个defineView标识符,因此侧边栏链接会打开该已保存视图。 - 类型为
RECORD_PAGE的页面布局面向某个对象,并可在其选项卡内嵌入前端组件作为小部件。
defineView
为对象定义已保存的视图
defineView
为对象定义已保存的视图
视图是关于对象记录如何显示的已保存配置——包括哪些字段可见、它们的顺序,以及应用的任何筛选器或分组。 使用 关键点:
defineView() 随你的应用一起提供预配置的视图:src/views/example-view.ts
objectUniversalIdentifier指定此视图适用于哪个对象。key决定视图类型(例如,主列表视图使用ViewKey.INDEX)。fields控制显示哪些列及其顺序。 每个字段引用一个fieldMetadataUniversalIdentifier。- 你还可以定义
filters、filterGroups、groups和fieldGroups以进行更高级的配置。 position在同一对象存在多个视图时控制其排序。
defineNavigationMenuItem
定义侧边栏导航链接
defineNavigationMenuItem
定义侧边栏导航链接
definePageLayout
为记录视图定义自定义页面布局
definePageLayout
为记录视图定义自定义页面布局
页面布局使你可以自定义记录详情页的外观——显示哪些选项卡、每个选项卡内有哪些小部件,以及它们如何排列。 使用 关键点:
definePageLayout() 随你的应用一起提供自定义布局:src/page-layouts/example-record-page-layout.ts
type通常为 ‘RECORD_PAGE’,用于自定义特定对象的详情视图。objectUniversalIdentifier指定此布局适用于哪个对象。- 每个
tab使用title、position和layoutMode定义页面的一个部分(CANVAS表示自由布局)。 - 选项卡内的每个
widget可以渲染一个前端组件、关系列表或其他内置小部件类型。 - 选项卡上的
position控制其顺序。 使用更高的值(例如 50)可将自定义选项卡放在内置选项卡之后。
definePageLayoutTab
向现有页面布局添加一个选项卡
definePageLayoutTab
向现有页面布局添加一个选项卡
definePageLayoutTab 允许你的应用将单个选项卡 — 可选小部件 — 附加到一个现有页面布局。 最常见的用例是向 Twenty 内置的某个记录页面添加自定义选项卡(例如,分析或 AI 摘要选项卡),或向你的应用已随附的页面布局添加该选项卡。目标页面布局必须是 标准 的 Twenty 页面布局,或由 你自己的应用 定义的布局;目前不支持跨应用引用由其他已安装应用拥有的页面布局。src/page-layouts/example-extra-tab.ts
pageLayoutUniversalIdentifier在使用definePageLayoutTab时是必需的,并且必须指向在安装时已存在的页面布局(标准布局或你的应用的布局)。 当父页面布局缺失时,安装会失败,并给出清晰的验证错误。widgets仅作用于此选项卡 — 它们引用前端组件、视图等,其方式与在definePageLayout中内联定义的小部件完全相同。position控制目标布局中相对于现有选项卡的排序。 选择一个取值,使你的选项卡相对于内置选项卡位于你想要的位置。- 当你只想向现有布局进行添加时,请使用此功能,而不是
definePageLayout。 当你拥有整个布局时,请使用definePageLayout(通常是你在应用中提供的对象的RECORD_PAGE,或STANDALONE_PAGE)。