删除Sitecore中的所有Referrer项目

时间:2014-11-10 19:42:17

标签: sitecore sitecore7

我在Sitecore中有一个布局项目,我可以通过链接按钮识别所有引荐来源项目。我有很多推荐人项目,我想删除所有这些。我希望我不必单独检查每个项目以删除参考项目。我也希望不删除引用的项目并重新创建它,因为它将为新项目生成不同的GUID。

有没有办法通过Sitecore Desktop或SQL Server执行此操作?

2 个答案:

答案 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";
  }