在sitecore中,我们说我下面有一个项目parentItem
我想创建一个基于模板childItem
的项目templateItem
,仅在{{{ 1}}不存在。
因此,只有当项目不存在为子项时,才会执行以下代码。
childItem
答案 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 方法中,从上面实现相同的代码段。
希望这有帮助!