Kentico Xperience 13多站点统一创建发布博客文章功能咨询
Kentico Xperience 13 多站点博客批量发布功能实现方案
步骤1:扩展博客文章内容类型,新增配置字段
首先在管理后台完成内容结构调整,同时支持分类选择和多站点选择配置:
- 进入「内容类型」模块,找到当前使用的博客文章(Blog Post)内容类型,先按常规需求新增文章分类下拉字段,绑定对应博客分类数据源即可。
- 新增多站点选择字段,配置如下:
- 字段名:
TargetSites - 数据类型:长文本
- 表单控件:多选下拉框/复选框列表
- 选项数据源:填写SQL查询语句
SELECT SiteName, SiteID FROM CMS_Site WHERE SiteStatus = 'Running',自动加载所有正常运行的站点作为可选值,无需手动维护选项。
- 字段名:
步骤2:注册全局事件,实现自动跨站点同步
通过Kentico推荐的自定义模块方式绑定系统事件,无需修改系统核心代码:
- 在项目中新建自定义模块类,继承
CMS.ModuleLoader,在OnInit方法中绑定DocumentEvents.Insert.After和DocumentEvents.Update.After两个事件,过滤触发条件为仅针对博客文章内容类型生效。 - 编写事件处理逻辑:
- 读取当前触发事件的博文的
TargetSites字段值,拆分得到所有选中的目标站点ID列表。 - 遍历每个目标站点ID,先判断当前操作站点是否和目标站点一致,一致则跳过避免重复创建。
- 若为新增博文操作,调用
DocumentHelper.CopyDocument方法将当前博文完整复制到目标站点的对应博客节点下,同步所有字段内容、分类、标签等关联信息,可直接设置目标文档状态为已发布。 - 若为更新已有博文操作,先查询目标站点下的对应同步博文,直接覆盖更新内容即可。
- 读取当前触发事件的博文的
步骤3:可选优化配置
- 可在博客文章内容类型中新增只读字段
SyncStatus,每次同步完成后将成功、失败的站点列表写入该字段,编辑人员提交内容后可直接查看同步结果。 - 若博客用到媒体资源,建议统一使用全局媒体库存储,所有站点均有权限读取,无需额外开发媒体资源跨站点复制逻辑。
注意事项
- 同步前需确保所有目标站点的博客文章内容类型结构和源站点完全一致,避免字段缺失导致同步报错。
- 操作账号需要配置所有目标站点的内容编辑、发布权限,否则会触发权限校验失败导致同步中断。
内容的提问来源于stack exchange,提问作者Mishka
相关产品推荐
相关产品推荐

