如何在Directus CMS中创建类似Strapi的组件或动态区域?
在Directus中实现Strapi组件/动态区域的等效方案
针对你提到的Strapi组件(可复用字段组)和动态区域(多类型组件集合),Directus有专门的替代方案,普通Group字段确实无法满足需求,具体实现如下:
一、替代Strapi「可复用组件」
Strapi的组件核心是可跨集合复用的嵌入字段组,Directus对应两种实现方式:
1. 共享字段组(推荐)
这是最接近Strapi组件的实现,字段组可跨集合复用,修改后同步所有引用:
- 操作步骤:
- 进入「设置 > 数据模型 > 共享字段」
- 创建新的共享字段组,添加所需字段(如文本、图片、日期等)
- 在目标集合的字段配置中,点击「添加字段 > 共享字段」,选择已创建的字段组即可
- 特性:数据嵌入父集合,无需关联,和Strapi组件的存储逻辑完全一致。
2. 独立集合+关联(适合需独立管理的组件)
如果需要组件实例可单独编辑管理,可创建独立集合:
- 创建一个新集合(如
card_component),添加组件所需字段 - 在父集合中创建「一对多」或「多对一」关联,关联到这个组件集合
- 特性:组件数据独立存储,支持单独筛选、编辑,适合复杂复用场景。
二、替代Strapi「动态区域」
Strapi动态区域允许在同一位置添加多种类型的组件并调整顺序,Directus用Repeater字段+条件逻辑实现:
- 操作步骤:
- 先创建好所有需要的共享字段组(对应不同的组件类型)
- 在父集合中添加一个Repeater字段(命名如
dynamic_content) - 在Repeater内部添加一个下拉字段(如
component_type),选项设置为你的组件类型(如card、banner、text_block) - 将每个共享字段组添加到Repeater中,给每个字段组设置条件逻辑:仅当
component_type匹配对应类型时显示 - 保存配置后,在内容编辑界面即可选择组件类型、添加多个条目并调整顺序
备选:Layout字段(Directus 10+)
如果不需要高度自定义,Directus 10+的Layout字段提供预设布局类型,可快速选择不同组件样式,适合轻量化场景。
为什么普通Group字段不行?
普通Group字段是单一、不可复用的字段容器,只能在当前集合内使用,无法跨集合复用,也不支持动态切换不同类型的字段组,因此无法替代Strapi的组件/动态区域。
内容的提问来源于stack exchange,提问作者Shubham Nikam
相关产品推荐
相关产品推荐

