在我的 Sitecore 6.1.0 安装中,我通过如下实现我自己的自定义处理程序(在 Web.config 中)连接到“item: added”事件:
<event name="item:added">
<handler type="Sitecore.Data.Fields.ItemEventHandler, Sitecore.Kernel" method="OnItemAdded" />
<handler type="my.project.Classes.OnSaveItemHandler, my.project" method="OnItemAdded" />
</event>
这样做的目的是强制项目的唯一名称 - 换句话说,在我的 OnItemAdded 方法中,我想对与正在添加的项目同名的任何其他项目进行 Lucene 搜索。
每次在 Sitecore 结构中添加项目时都会调用 OnItemAdded 方法。但我的问题是 -每个项目不止一次调用该方法。我已经看到每个添加的项目都会调用 6 到 26 次,具体取决于我在 Sitecore 结构中添加项目的位置。我的 OnItemAdded 方法的主体是空的:
protected void OnItemAdded(object obj, EventArgs args)
{
}
添加项目时第一次调用该方法时,args
参数中的项目是正确的项目。如果项目的名称是theItemName
,则 FullPath 属性将如下所示:
/sitecore/content/theItemName
每次除了第一个,项目看起来都是正确的,但项目的路径如下所示:
[orphan]/sitecore/content/theItemName
为什么将 [orphan] 位添加到完整路径中?为什么要多次调用 OnItemAdded 方法,即使我只添加一项?