将使用Ghost Content Types的2sxc升级至Shared Global Content Types的迁移问题
核心疑问解答:是否仅需导出重配置?
不是。单纯导出Ghost类型结构再重新配置全局类型,无法完整迁移内容依赖关系——因为二者的存储结构、关联逻辑存在本质差异,直接操作会导致现有内容与类型断联,出现内容无法加载的问题。
必须注意的关键事项
- 全站点依赖排查:先梳理所有门户中使用Ghost Content Types的模块、模板,记录每个类型关联的内容项数量、位置,确保没有遗漏的依赖点。
- 字段兼容性校验:Shared Global Content Types对字段的命名、约束更严格,Ghost类型中的自定义字段别名可能存在跨门户冲突,需提前统一字段命名规则,避免导入时出错。
- 权限同步适配:全局类型的权限为跨门户共享模式,要确保新的全局类型权限与原Ghost类型的门户专属权限匹配,防止出现部分用户无法编辑内容的权限问题。
- 模板代码适配:原基于Ghost类型的Razor模板、WebApi调用,必须修改类型引用路径,将原Ghost类型的标识替换为新全局类型的标识,否则内容无法正常渲染。
快速顺利迁移的步骤
- 全站点备份:迁移前务必备份整个Dnn站点(含数据库和文件目录),作为回退保障。
- 导出Ghost类型结构:在2sxc管理界面导出所有Ghost Content Types的结构定义(不要勾选导出内容)。
- 创建并导入全局类型:进入全局内容类型管理界面,新建对应类型,导入导出的结构,同时调整字段名称、权限设置以适配全局类型规则。
- 批量迁移内容:使用2sxc内置的内容迁移工具,或编写轻量SQL脚本,将原Ghost类型关联的内容项批量映射到新全局类型上,需确保保留内容的关联关系(如父子内容、分类标签)。
- 模块与模板更新:逐个更新使用原Ghost类型的模块,切换为新的全局类型;同时修改模板中的类型引用代码,测试内容渲染是否正常。
- 分门户验证:每个门户逐一验证内容显示、编辑功能,确认无断联或错误后,再推进全站点迁移。
- 清理旧数据:所有验证通过后,删除原Ghost Content Types的定义,避免后续管理混淆。
规避问题的实用技巧
- 小范围前置测试:先在测试门户(或克隆现有门户)完成迁移测试,总结问题后再推广到全站点。
- 制作字段映射表:提前整理Ghost类型与全局类型的字段对应关系,避免迁移时字段匹配错误。
- 临时保留原类型:迁移过程中不要立即删除原Ghost类型,直到所有内容、模板切换完成,确保有回退空间。
内容的提问来源于stack exchange,提问作者10 Pound Gorilla
相关产品推荐
相关产品推荐

