我在Sitecore中有一个布局项目,我可以通过链接按钮识别所有引荐来源项目。我有很多推荐人项目,我想删除所有这些。我希望我不必单独检查每个项目以删除参考项目。我也希望不删除引用的项目并重新创建它,因为它将为新项目生成不同的GUID。
有没有办法通过Sitecore Desktop或SQL Server执行此操作?
答案 0 :(得分:2)
如果您已在标准值上设置演示文稿详细信息,则只需将模板标准项目上的布局更改为新布局。
如果不是这种情况,请使用Sitecore包设计器将其打包备份您的布局项,然后尝试删除布局项。 Sitecore将显示一个弹出窗口,告诉您其他项目包含指向此项目的链接,并为您提供链接到其他项目的选项,这是您需要的。
之后,您可以通过安装备份包来恢复布局项目。
答案 1 :(得分:2)
您可以在后面的代码中创建一个动态的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";
}