Kentico如何不使用UI Personalization禁用页面级附件?
无需UI Personalization禁用Kentico页面附件的实现方法
以下是三种经过验证的可行方案,均不需要启用UI Personalization功能:
方法1:通过模块权限全局配置
- 进入Kentico后台「模块」应用,搜索找到页面(Pages)模块
- 切换到「权限」标签页,选择对应站点需要限制的角色,如需全局禁用可选择所有角色
- 找到「管理附件」权限项,取消勾选对应角色的权限即可
- 配置完成后即时生效,所有角色将无法进行页面级附件的新增、删除操作
方法2:针对特定页面类型禁用
如果只需要禁用部分页面类型的附件功能,可使用该方案:
- 进入「页面类型」应用,找到目标页面类型点击编辑
- 切换到「字段」标签页,找到系统自带的
Attachments字段,可直接删除,也可以将字段的可见性条件设置为false隐藏该字段 - 保存配置后,仅该类页面不会显示附件上传入口,其他页面类型不受影响
方法3:自定义事件全局拦截
如果需要彻底拦截所有附件操作,避免权限配置遗漏,可以通过注册全局事件实现:
- 新建自定义类库,引用Kentico核心程序集
- 添加如下自定义模块代码:
using CMS.DocumentEngine; using CMS.Base; [assembly: RegisterModule(typeof(CustomAttachmentDisablerModule))] public class CustomAttachmentDisablerModule : Module { public CustomAttachmentDisablerModule() : base(nameof(CustomAttachmentDisablerModule)) { } protected override void OnInit() { base.OnInit(); // 拦截附件新增操作 DocumentAttachmentEvents.Insert.Before += (sender, eventArgs) => eventArgs.Cancel(); // 如有需要可同时拦截附件删除、修改操作 // DocumentAttachmentEvents.Delete.Before += (sender, eventArgs) => eventArgs.Cancel(); // DocumentAttachmentEvents.Update.Before += (sender, eventArgs) => eventArgs.Cancel(); } }
- 将编译后的dll部署到站点bin目录即可生效,所有页面级附件的操作都会被拦截

内容的提问来源于stack exchange,提问作者chamara
相关产品推荐
相关产品推荐

