Sitecore仅在父项目不存在时才创建项目的最佳方式

时间:2015-09-07 12:58:40

标签: sitecore sitecore7 sitecore7.2

在sitecore中,我们说我下面有一个项目parentItem我想创建一个基于模板childItem的项目templateItem,仅在{{{ 1}}不存在。

因此,只有当项目不存在为子项时,才会执行以下代码。

childItem

1 个答案:

答案 0 :(得分:0)

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

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

string itemName = "Child item";

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

当然,从上到处都有这个子句并不是一个好主意,因此您可能希望在每个项目创建时自动执行该子句。为此,请创建自定义项:使用自定义项创建事件处理程序,如:

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

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

希望这有帮助!