如何使用自定义上下文菜单(命令)以编程方式向页面的所有子子项添加渲染

时间:2019-05-01 08:20:16

标签: sitecore8 sitecore-mvc

在Sitecore内容树中,应为内容编辑器提供一个选项,可以一键向所有子项和子子项添加“测试”渲染。

我添加了一个自定义菜单选项(在父页面的右键单击上),以向所有子项和子子项(具有演示文稿的详细信息)添加渲染。

在Sitecore 8.1版本中,在sitecore核心数据库中添加了新命令,并创建了一个类来覆盖execute方法。

试图获取当前项目的渲染,并检查是否存在“测试”渲染。 例如:我有客户项目,在此之下有客户1,客户2项目。 在“客户1”下,可能还会有带有演示文稿详细信息的子子项。

在客户端项目上单击鼠标右键,将有一个自定义按钮以“添加测试渲染”,单击该按钮时,应执行命令并将渲染添加到所有子项和子子项。

Database masterDatabase = Database.GetDatabase("master");
Item sampleItem = masterDatabase.GetItem(commandContext.Items[0].Paths.Path);
string renderingXml = sampleItem["__Renderings"];
var originalLayoutXml =   Sitecore.Data.Fields.LayoutField.GetFieldValue(sampleItem.Fields[Sitecore.FieldIDs.LayoutField]);
var oldLayout = LayoutDefinition.Parse(originalLayoutXml);
var oldRenderings = (oldLayout.Devices[0] as DeviceDefinition).Renderings;

预期结果:如果(测试渲染不存在),内容编辑器需要向所有子项和子子项添加新的渲染。

0 个答案:

没有答案