请求指引:在Umbraco 11中创建自定义Block替代Umbraco 8网格编辑器
迁移Umbraco 8自定义Grid布局到Umbraco 11 Block Grid的实现指南
1. 先吃透Block Grid核心逻辑
Umbraco 11的Block Grid是替代原Grid的全新体系,核心是Block Type(可复用的内容组件)和Block Grid数据类型(管理Block的容器):
- Block Type对应你原Grid自定义编辑器里的每个布局项,是独立的内容单元
- Block Grid数据类型用来定义Block的排列规则(比如列数、布局约束)
2. 定义自定义Block Type
直接在后台操作:
- 进入
Settings → Block Types,新建Block Type,命名对应原Grid的自定义布局项 - 给Block Type添加属性组和字段,把原Grid编辑器里的自定义字段(文本、图片、样式参数等)完全迁移过来
- 若原Grid有后端自定义逻辑(比如字段值转换),现在要实现
IBlockValueConverter接口来处理Block的数据转换
3. 自定义Block后台编辑器(若需复刻原Grid交互)
如果原Grid有自定义编辑器界面,需要迁移到Umbraco 11的React生态:
- 开发自定义Property Editor:实现
IPropertyEditorConfiguration接口定义配置项,编写React组件复刻原编辑器的交互逻辑 - 将自定义Property Editor注册到Umbraco的编辑器集合,关联到Block Type的对应属性上
- 若只是简单样式调整,优先用Umbraco自带的属性编辑器组合,减少自定义开发量
4. 前端渲染适配
替换原Grid的渲染逻辑:
- 原
@Html.GetGridHtml()替换为@Html.GetBlockGridHtml() - 在
Views/BlockGrid/Components目录下为每个自定义Block Type创建视图模板(命名规则:[BlockTypeAlias].cshtml),把原Grid的布局渲染逻辑迁移到这个模板里 - 若需要全局控制渲染流程,可实现
IBlockGridRenderer接口自定义渲染逻辑
5. 数据迁移(从Grid到Block Grid)
写脚本批量转换数据:
- 遍历所有使用原Grid的文档节点,读取Grid的JSON数据
- 将原Grid的
sections/rows/areas结构映射为Block Grid的layout和content结构,确保每个原Grid组件对应一个Block实例 - 测试转换后的数据在后台和前端的展示效果
6. 测试与验证
- 在后台创建测试内容,验证自定义Block的编辑流程是否和原Grid一致
- 检查前端渲染的布局、样式是否匹配原效果
- 调试数据转换逻辑和后端处理代码,确保没有遗漏字段或逻辑
内容的提问来源于stack exchange,提问作者Eranga Wijethunga
相关产品推荐
相关产品推荐

