假设我们有一个Item Product(其中包含en,jp,zh和u版本的版本).我如何在en,jp和zh中获得此项而不在ru中.
我尝试了下面的代码.
Item tempItem = Sitecore.Context.Database.GetItem(tempID);
foreach (var itemLanguage in tempItem.Languages)
{
//Do Something
}
Run Code Online (Sandbox Code Playgroud)
这里tempItem.Languages返回所有四种语言,我只期望三种语言,因为ru没有版本.
这是实现这一目标的正确方法吗?
如何在所有语言中将所有儿童和大孩子置于家庭项目下,如果他们有该语言的版本?
我想使用Sitecore查询来实现这一点.
下面是我正在使用的代码.
//Getting the default "en" language
var contextLanguage = Sitecore.Context.Language.Name;
string query = "/sitecore/content/home//*";
//Getting items in en language
List<Item> items = database.SelectItems(query).ToList();
foreach (var language in languages)
{
//Getting items in all language other than the default en language
if (!string.Equals(contextLanguage, language))
{
//Changing the context language so as to get items in the particular language
Sitecore.Context.Language = Sitecore.Globalization.Language.Parse(language);
items.AddRange(database.SelectItems(query).ToList());
}
}
//Ressetting the context to the default language
Sitecore.Context.Language = Sitecore.Globalization.Language.Parse(contextLanguage);
Run Code Online (Sandbox Code Playgroud)
注意:此处语言是网站中所有可用语言的集合.
上面的代码返回给我每个项目4(因为我们有4种语言),当他们没有特定语言的版本时,只有默认的en语言.
注意:我在网站中使用语言回退模块.这可能是一个原因吗?
有没有更好的方法来实现这一目标?