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