Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore可防止删除组件_Sitecore_Sitecore8_Sitecore8.1 - Fatal编程技术网

Sitecore可防止删除组件

Sitecore可防止删除组件,sitecore,sitecore8,sitecore8.1,Sitecore,Sitecore8,Sitecore8.1,我有一个页面,当用户创建它时,它会在占位符中插入一些预定义的组件(例如gallery和header) 我还希望web masters能够自由地在预定义组件周围的占位符中插入其他可能的组件,但我希望以某种方式禁止编辑/删除页面中的预定义组件(图库和页眉) 但是,内容编辑器可以将另一个库组件(技术上可能)添加到同一页面,并在需要时将其删除。但是不应该触摸预定义组件(至少要从占位符中删除。换句话说,我不希望在体验编辑器中预定义组件旁边有一个删除按钮) 有一种方法可以完全禁止编辑组件渲染,但我仍然希望w

我有一个页面,当用户创建它时,它会在占位符中插入一些预定义的组件(例如gallery和header)

我还希望web masters能够自由地在预定义组件周围的占位符中插入其他可能的组件,但我希望以某种方式禁止编辑/删除页面中的预定义组件(图库和页眉)

但是,内容编辑器可以将另一个库组件(技术上可能)添加到同一页面,并在需要时将其删除。但是不应该触摸预定义组件(至少要从占位符中删除。换句话说,我不希望在体验编辑器中预定义组件旁边有一个删除按钮)

有一种方法可以完全禁止编辑组件渲染,但我仍然希望web管理员自己插入组件(如果他们愿意)。我只是希望他们不要修改创建页面时出现的组件


据我所知,这可以在RenderingReference级别上进行,但我不知道如何进行。你能给我一点小费吗?

好的,我已经找到了一种方法。 以防有人需要它

首先,我们需要创建一个处理器来捕获体验编辑器中的页面渲染

public class CheckLockedComponentsHandler : GetClientActionsChromeData
{
    public new void Process(GetChromeDataArgs args)
    {
        if (args.ChromeType == "rendering")
        {
            if (args.CustomData["renderingReference"] is RenderingReference rf && !string.IsNullOrEmpty(rf.Settings.Parameters))
            {
                var rmParams = WebUtil.ParseUrlParameters(rf.Settings.Parameters);
                args.ChromeData.Custom["editable"] = string.IsNullOrEmpty(rmParams["editable"]) ? "true" : rmParams["editable"];
            }
        }
    }
}
当创建锁定组件时,我们添加属性editable=false。

最后,我们需要在配置中注册处理器

<pipelines>
    <getChromeData>
             <processor type="CheckLockedComponentsHandler,MyLib" patch:after="*[last()]"/>
            </processor>
    <getChromeData>
</pipelines>

最好在上问这个问题