Orchard CMS如何避免多用户同时编辑页面的内容覆盖问题?
解决Orchard多用户编辑页面的无警告覆盖问题(无需定制开发)
嘿,我来给你几个不用定制Orchard就能搞定这个问题的方案,都是利用系统内置功能的:
启用内置的内容项锁定机制
其实Orchard自带内容锁定功能,默认可能没开而已。你只需要去内容类型的设置里找到对应页面类型,在编辑行为/高级设置里开启「内容锁定」。开启后,当一个用户开始编辑页面时,系统会自动锁定该内容,其他用户打开时会看到「此内容正在被他人编辑」的提示,没法修改,直到当前用户保存或取消编辑——从根源上避免了覆盖。用版本历史做事后补救
如果暂时不想开锁定,Orchard的版本控制功能也能帮你兜底。每次编辑保存都会生成新版本,要是真出现了覆盖情况,管理员可以进入内容项的版本历史页面,找到之前用户编辑的版本直接恢复。虽然不能提前阻止,但能把损失降到最低。借助工作流实现编辑冲突提醒
你之前没找到编辑开始的触发信号?其实Orchard工作流里有「内容项编辑时」这个事件,就是用户打开编辑页面时触发的。可以用它来记录用户打开页面的时间,然后结合「内容项更新前」事件做冲突检查:- 新建工作流,触发事件选「内容项编辑时」,添加动作把当前时间存入用户会话;
- 再添加一个以「内容项更新前」为触发事件的工作流,添加条件:对比内容项的「最后修改时间」和会话里存的打开时间;
- 如果时间不一致,说明有其他人修改过,就触发警告动作,提示用户内容已更新,让用户选择是否覆盖或者取消保存。
这些方法都是用Orchard原生功能,不用写定制代码,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Jazunka
相关产品推荐
相关产品推荐

