如何解释sitecore以未创建的语言返回项目?

如何解释sitecore以未创建的语言返回项目?,sitecore,Sitecore,我有一个用荷兰语定义的项目,它如下所示: 当我试图通过查询该项的父项来查找该项时,我找不到它 rootTagItem.Axes.getSubstands()。。。。 看着即时窗口,我可以告诉家长包含该项目,但在英语中,这让我感到困惑 rootTagItem.Axes.getSubstands() Sitecore.Data.Items.Item[23] Veehouderij Varkens(英国)#1@web),id:{ED94B438-722B-498B-9499-84F749BB842

我有一个用荷兰语定义的项目,它如下所示:

当我试图通过查询该项的父项来查找该项时,我找不到它

rootTagItem.Axes.getSubstands()。。。。
看着即时窗口,我可以告诉家长包含该项目,但在英语中,这让我感到困惑

rootTagItem.Axes.getSubstands()
Sitecore.Data.Items.Item[23]
Veehouderij Varkens(英国)#1@web),id:{ED94B438-722B-498B-9499-84F749BB8429}
数据库:“网络”
Id:{ED94B438-722B-498B-9499-84F749BB8429}
语言:“en”
姓名:“Veehouderij Varkens”
版本:“1”
尽管未定义英文版本,但我们如何解释项目以英文版本返回(见图)


马雷克的回答被接受,因为他提供了解释它的链接。

这就是Sitecore的工作原理

当此项目存在其他语言版本时,Sitecore将返回此项目,即使您的语言中没有任何版本

您需要做的是像这样检查
.Versions.Count()

rootTagItem.Axes.getDescents()。其中(d=>d.Versions.Count>0);

有些人称它们为
空项
。我不知道这是否是官方的Sitecore命名。在Sitecore 8.1中,您可以强制Sitecore跳过它们


您可以在博客上找到更多信息,作者是凯文·布雷希布吕尔

您使用的是哪个版本的Sitecore?你在使用语言回退吗?我在使用版本8,不确定我是否在使用语言回退,我会调查一下。谢谢Marek,我仍然不确定我是否理解你的回答。为什么sitecore会返回甚至没有定义的项目的英文版本?按照同样的逻辑,sitecore为什么不返回德语版本的项目?我同时检查了数据库,一切似乎都正常,项目以荷兰语存储,具有适当的值,英语(ghost)版本不包含任何值。。。仍然让人困惑的是,有些人称它们为
空项目
。我不知道这是否是官方的Sitecore命名。你可以在Kevin Brechbühl的博客上读到更多关于他们的信息,谢谢Marek,Kevin的链接解释了这个问题。