如何在创建Sitecore项目时避免重复名称

如何在创建Sitecore项目时避免重复名称,sitecore,sitecore6,sitecore7,sitecore-mvc,Sitecore,Sitecore6,Sitecore7,Sitecore Mvc,我在Sitecore项目中面临一个问题。由于我们在一个团队中工作,我们无法跟踪所有创建的项目以及他们给出的名称。问题是,人们正在使用相同的名称创建项目。这会在将项目移动到不同环境时导致一些严重问题 我想要的是,在创建Sitecore项时,管道方法应该执行并验证其直接父项是否已经具有相同的项名称 例如:Parent A有三个子项,分别称为Child1、Child2、Child3,当开发人员试图创建名为Child2的项目时,弹出窗口/警报应显示,不允许他创建该项目 请帮我解决这个问题。您可以将自己的

我在Sitecore项目中面临一个问题。由于我们在一个团队中工作,我们无法跟踪所有创建的项目以及他们给出的名称。问题是,人们正在使用相同的名称创建项目。这会在将项目移动到不同环境时导致一些严重问题

我想要的是,在创建Sitecore项时,管道方法应该执行并验证其直接父项是否已经具有相同的项名称

例如:
Parent A
有三个子项,分别称为
Child1、Child2、Child3
,当开发人员试图创建名为
Child2
的项目时,弹出窗口/警报应显示,不允许他创建该项目


请帮我解决这个问题。

您可以将自己的处理程序添加到
项:creating
事件中,并检查父项是否已包含具有建议名称的子项

这是一篇很好的帖子。我从那里复制了以下代码:


名称空间
{
公共类防止重复
{
公共创建(对象发送方、事件args args)
{
使用(新的SecurityDisabler())
{
ItemCreatingEventArgs arg=Event.ExtractParameter(args,0)作为ItemCreatingEventArgs;
如果((arg!=null)&&(Sitecore.Context.Site.Name==“shell”))
{
foreach(arg.Parent.GetChildren()中的项currentItem)
{
如果((arg.ItemName.Replace(“”,“-”).ToLower()==currentItem.Name.ToLower())
&&(arg.ItemId!=currentItem.ID))
{
((SitecoreEventArgs)args).Result.Cancel=true;
Sitecore.Context.ClientPage.ClientResponse.Alert
(“名称”+currentItem.Name+“已在使用中。请为页面使用其他名称。”);
返回;
}
}
}
}
}
}
}

我为此发布了一篇博文,它使用项目创建/保存事件并使用索引搜索来识别重复项。这是通过Sitecore 7.2实现和测试的。以下是使用的配置:

<sitecore>
  <events>
    <event name="item:creating">
      <handler type="MySite.Customizations.Customized_Sitecore.UniqueItemNameValidator, MySite" method="OnItemCreating" />
    </event>
    <event name="item:saving">
      <handler type="MySite.Customizations.Customized_Sitecore.UniqueItemNameValidator, MySite" method="OnItemSaving" />
    </event>
  </events>
</sitecore>

该解决方案不会捕获重命名项时出现的问题,它只会在创建项时进行检查。