删除Sitecore中的所有推荐人项目
我在Sitecore中有一个布局项目,我能够通过链接按钮识别所有推荐人项目。我有大量的推荐物品,我想把它们全部删除。我希望我不必逐个检查每个项目来删除参考项目。我还希望不要删除引用的项并重新创建它,因为它将为新项生成不同的GUID删除Sitecore中的所有推荐人项目,sitecore,sitecore7,Sitecore,Sitecore7,我在Sitecore中有一个布局项目,我能够通过链接按钮识别所有推荐人项目。我有大量的推荐物品,我想把它们全部删除。我希望我不必逐个检查每个项目来删除参考项目。我还希望不要删除引用的项并重新创建它,因为它将为新项生成不同的GUID 有没有办法通过Sitecore桌面或SQL Server实现这一点 如果已在标准值上设置了演示文稿详细信息,则只需将“模板”标准项上的布局更改为新布局即可 如果情况并非如此,请使用Sitecore软件包设计器对布局项进行打包,以备份布局项,然后尝试删除布局项。Site
有没有办法通过Sitecore桌面或SQL Server实现这一点 如果已在标准值上设置了演示文稿详细信息,则只需将“模板”标准项上的布局更改为新布局即可 如果情况并非如此,请使用Sitecore软件包设计器对布局项进行打包,以备份布局项,然后尝试删除布局项。Sitecore将显示一个弹出窗口,告诉您其他项目包含指向此项目的链接,并为您提供链接到其他项目的选项,这正是您所需要的
之后,您可以通过安装备份包来恢复布局项。您可以使用代码隐藏中的以下代码逻辑创建动态Asp.net页面
public string RemoveReferenceLinks(string nodePath)
{
var db = Sitecore.Configuration.Factory.GetDatabase("master");
var item = db.GetItem(nodePath);
if (item == null) return new ItemLink[0];
var links = Globals.LinkDatabase.GetItemReferrers(item, true);
if (links.Length == 0)
{
return "No referrence found";
}
foreach (var link in links)
{
var sourceItem = link.GetSourceItem();
foreach (var item1 in sourceItem.Versions.GetVersions(true))
{
var field = item1.Fields[link.SourceFieldID];
var field2 = FieldTypeManager.GetField(field);
if (field2 == null) return;
using (new SecurityDisabler())
{
item1.Editing.BeginEdit();
field2.RemoveLink(link);
item1.Editing.EndEdit();
}
}
}
return "All reference removed";
}
您是否已将演示文稿设置为单个项目或标准值?您是在尝试删除引用的项目还是仅断开链接?