【问题标题】:Delete child items recursively in Sitecore CMS.NET在 Sitecore CMS.NET 中递归删除子项
【发布时间】:2010-10-13 03:16:31
【问题描述】:

我的 Sitecore 媒体库中有以下结构

图片/部门/子部门/产品/

我想一次删除一个部门代码中的所有图像。目前我有

Item[] items = database.SelectItems("/sitecore/media library/images/department1//*");            

Sitecore.Data.Engines.DataEngine engine = new Sitecore.Data.Engines.DataEngine(database);

using (new SecurityDisabler())
{
    foreach (Item item in items)
    {
        engine.DeleteItem(item))
    }
}

问题是它只删除了department1的子图像,下面什么都没有?

【问题讨论】:

    标签: c# recursion sitecore


    【解决方案1】:

    DataEngine 是一个非常底层的 API,不应无故使用。

    同时删除所有子项很容易:

    Item department1 = database.GetItem("/sitecore/media library/images/department1"); 部门1.DeleteChildren();

    这将留下department1项,但它下面的所有内容都将被删除。

    【讨论】:

    • 感谢您的回答,您使用 DataEngine 的原因是什么?
    • 永远不会快速回答,除非您知道自己在做什么。更长的答案是,有时人们需要硬核定制或解决方法,而这无法使用更高级别的公共 API 来实现。但即便如此,它也可能由 Sitecore 支持人员完成,这不是我们记录的内容
    • 我还建议使用 Visual Studio 的 Sitecore Rocks 扩展。您可以直接在 VS 中查看内容树,并通过右键单击内容树中的任意位置并选择查询分析器来执行“命令”。用于这种情况的一种方法是:从 /sitecore/media library/images/department1/* 删除您还可以使用 Item 属性,例如 [@@templateid=""] 等。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2010-09-19
    • 2017-08-22
    • 2012-03-04
    相关资源
    最近更新 更多