有谁知道如何从 Sitecore 项目中删除效果图?
我想删除所有子布局,以便用新的集合替换它们。 我有 tried this但它似乎不起作用。项目没有任何变化。
我好像能得到这样的效果图:
RenderingReference[] renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, true);
但似乎没有办法设置它们。
我也可以得到这样的效果图(从上面的链接):
LayoutDefinition layoutDefinition = LayoutDefinition.Parse(LayoutField.GetFieldValue(item.Fields[Sitecore.FieldIDs.LayoutField]));
DeviceDefinition device = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());
if (device.Layout != null) device.Layout = null;
if (device.Renderings != null) device.Renderings = new ArrayList();
但这同样行不通。从 layoutDefinition 中清除设备并设置修改后的设备导致此异常:无法建立连接,因为目标机器主动拒绝它
。我现在根本无法查看该项目!
我觉得我找错了方向,有什么想法吗?
使用 Sitecore 6.4
更新回复:techphoria414
我试过的代码:
layoutDefinition.Devices.Clear();
layoutDefinition.Devices.Add(device);
最佳答案
我认为你的异常是无关的。要实际保存您的更改,您需要编辑该项目。请确保始终通过 LayoutField.Value
访问和更新值。
LayoutField layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
LayoutDefinition layout = LayoutDefinition.Parse(layoutField.Value);
//make your changes to the LayoutDefinition here
item.Editing.BeginEdit();
layoutField.Value = layout.ToXml();
item.Editing.EndEdit();
关于c# - 以编程方式删除 Sitecore 中的子布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604819/