删除Sitecore中的所有推荐人项目

删除Sitecore中的所有推荐人项目,sitecore,sitecore7,Sitecore,Sitecore7,我在Sitecore中有一个布局项目,我能够通过链接按钮识别所有推荐人项目。我有大量的推荐物品,我想把它们全部删除。我希望我不必逐个检查每个项目来删除参考项目。我还希望不要删除引用的项并重新创建它,因为它将为新项生成不同的GUID 有没有办法通过Sitecore桌面或SQL Server实现这一点 如果已在标准值上设置了演示文稿详细信息,则只需将“模板”标准项上的布局更改为新布局即可 如果情况并非如此,请使用Sitecore软件包设计器对布局项进行打包,以备份布局项,然后尝试删除布局项。Site

我在Sitecore中有一个布局项目,我能够通过链接按钮识别所有推荐人项目。我有大量的推荐物品,我想把它们全部删除。我希望我不必逐个检查每个项目来删除参考项目。我还希望不要删除引用的项并重新创建它,因为它将为新项生成不同的GUID


有没有办法通过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";
  }

您是否已将演示文稿设置为单个项目或标准值?您是在尝试删除引用的项目还是仅断开链接?