【问题标题】:Remove All Referrer Items in Sitecore删除 Sitecore 中的所有推荐人项目
【发布时间】:2015-09-25 22:59:50
【问题描述】:

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

有没有办法通过 Sitecore Desktop 或 SQL Server 做到这一点?

【问题讨论】:

  • 您是针对单个项目还是针对标准值设置演示文稿
  • 您是要删除引用的项目还是只是为了断开链接?

标签: sitecore sitecore7


【解决方案1】:

您可以在后面的代码中使用以下代码逻辑创建一个动态的 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";
  }

【讨论】:

    【解决方案2】:

    如果您已在标准值上设置了演示详细信息,则只需将模板标准项上的布局更改为新布局即可。

    如果不是这样,请使用 Sitecore 包设计器打包您的布局项目,然后尝试删除布局项目。 Sitecore 将显示一个弹出窗口,告诉您其他项目包含指向该项目的链接,并为您提供链接到另一个项目的选项,这是您需要的。

    之后,您可以通过安装备份包来恢复您的布局项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多