Sitecore 仅在父项不存在时才在父项下创建项的最佳方法

Sitecore best way to create an item under parent Item only when it does not exist

在 sitecore 中,假设我下面有一个项目 parentItem 我想创建一个基于模板 templateItem 的项目 childItem,仅当 childItem 不存在。

因此只有当该项目不存在时才应执行以下代码。

 parentItem.Add("Child Item", templateItem);

你说项目存在是什么意思?同名物品?在 Sitecore 中,可以有多个项目名称相同。这些项目实际上并不相同,并且具有不同的 ID。

因此,为了避免在同一父级下创建同一个模板的另一个同名子项,您需要将构造升级为以下内容:

string itemName = "Child item";

if(!dataItem.Children.Any(i=>i.Name == itemName && i.TemplateID == templateItem.ID))
{
    dataItem.Add(itemName, templateItem);
}

当然,将上面的子句随处可见并不是一个好主意,因此您可能希望在每次创建项目时自动执行该子句。为此,请使用自定义事件处理程序创建自定义 item:creating 事件处理程序,如下所示:

<event name="item:creating">
    <handler type="Your.Type, Your.Assembly.Name" method="OnItemCreating" />

并在 OnItemCreating 方法中,实现与上面相同的代码段。

希望对您有所帮助!