2015-11-09 56 views
2

我遇到了在荷蘭語中定義的項目,它看起來像以下: enter image description here如何解釋sitecore正在返回尚未創建的語言項目?

當我嘗試通過查詢它的父我找不到它找到了這個項目。

rootTagItem.Axes.GetDescendants() .... 

望着立即窗口我可以告訴父母包含的項目,但在英語,讓我感到困惑?!

rootTagItem.Axes.GetDescendants() 
Sitecore.Data.Items.Item[23] 

Veehouderij-Varkens (en#[email protected]), id: {ED94B438-722B-498B-9499-84F749BB8429} 
Database: "web" 
Id: "{ED94B438-722B-498B-9499-84F749BB8429}" 
Language: "en" 
Name: "Veehouderij-Varkens" 
Version: "1" 

我們如何解釋該項目在英文版儘管英文版本沒有定義(見圖片)的事實回來了?

馬立克的迴應被接受,因爲他提供瞭解釋它的鏈接。

+0

您正在使用哪個版本的Sitecore?你在使用語言後備? – jammykam

+0

我使用的是版本8,不知道如果我使用語言後備,我會研究它。 – krul

回答

5

這就是Sitecore的工作原理。

當此項目有其他語言版本時,即使沒有您的語言版本,Sitecore也會返回此項目。

你需要做的是檢查.Versions.Count()這樣的:

rootTagItem.Axes.GetDescendants().Where(d => d.Versions.Count > 0); 

有人叫他們empty items。我不知道它是否是官方的Sitecore命名或不是。在Sitecore 8.1中,您可以強制Sitecore跳過它們。

您可以通過KevinBrechbühlEnforce language version presence for items in Sitecore 8.1博客上找到更多信息。

+0

謝謝Marek,我還不確定我是否瞭解您的回覆。爲什麼sitecore會返回一個甚至沒有定義的項目的英文版本? 相同的邏輯爲什麼sitecore不會在德語版本中返回項目? 我沒有檢查數據庫,同時一切似乎正確,項目存儲在荷蘭與適當的價值,英語(鬼)版本不包含任何值...仍然困惑 – krul

+0

有些人稱他們爲空物品。我不知道這是官方的Sitecore命名。你可以在KevinBrechbühl博客http://ctor.io/enforce-language-version-presence-for-items-in-sitecore-8-1/ –

+0

上閱讀更多關於他們的信息。感謝Marek,Kevin的鏈接解釋了這個問題。 – krul