Sitecore 获取具有版本的所有语言的项
假设我们有一个Item产品(它有en、jp、zh版本和ru的0版本)。我怎样才能得到这个项目在en,jp和zh,而不是在ru 我尝试了下面的代码Sitecore 获取具有版本的所有语言的项,sitecore,sitecore7,Sitecore,Sitecore7,假设我们有一个Item产品(它有en、jp、zh版本和ru的0版本)。我怎样才能得到这个项目在en,jp和zh,而不是在ru 我尝试了下面的代码 Item tempItem=Sitecore.Context.Database.GetItem(tempID); foreach(tempItem.Languages中的var itemLanguage) { //做点什么 } 这里tempItem.Languages返回了我预期只有三种语言的所有四种语言,因为ru没有版本 这是实现这一目标的正确方法
Item tempItem=Sitecore.Context.Database.GetItem(tempID);
foreach(tempItem.Languages中的var itemLanguage)
{
//做点什么
}
这里tempItem.Languages
返回了我预期只有三种语言的所有四种语言,因为ru没有版本
这是实现这一目标的正确方法吗?您需要检查返回项目的版本计数。可能有更好的方法来实现这一点,但是按照您自己的代码示例,它看起来是这样的:
Item tempItem=Sitecore.Context.Database.GetItem(tempID);
foreach(tempItem.Languages中的var itemLanguage)
{
var item=tempItem.Database.GetItem(tempItem.ID,itemLanguage);
如果(item.Versions.Count>0)
{
//做点什么。如果没有“ru”版本,这将是0
}
}
我做了一个实验,得到了一个包含不同版本数的语言列表,用于检查不同版本的子项在系统上的开销
下面的脚本返回一个列表,其中包含具有该项版本的语言的名称
包含内容的公共静态列表语言(此项)
{
var result=ItemManager.GetContentLanguages(项)。选择(lang=>new{
郎的名字,
Versions=ItemManager.GetVersions(项目,语言).Count
//这比db.GetItem(item.ID,lang).Versions.Count更好
}).Where(t=>t.Versions>0);
返回结果;
}
基准绩效 第一次使用GetVersions加载-当数据不是来自缓存时
- 0.7298ms以获取8种语言版本的版本计数。加载项目的时间:9.3041ms。语言:es es、es MX、sv SE、en、it、pt BR、fr fr、de
- 0.0448ms以获取7种语言版本的版本计数。加载项目的时间:2.0039ms。语言:es es,es MX,en,it,fr fr,de,ro
- 0.0334ms以获取6种语言版本的版本计数。加载项目的时间:3.145ms。Langs:es-es,es-MX,恩,it,fr-fr,de-de
- 0.0307ms以获得5种语言版本的版本计数。加载项目的时间:1.5976ms。Langs:es MX,恩,it,fr fr,de
- 0.0353ms以获取4种语言版本的版本计数。加载项目的时间:10.2764ms。兰斯:恩,德,雅,日,达
- 0.0258毫秒以获取3种语言版本的版本计数。加载项目的时间:1.9507ms。Langs:en,de,ja,JP
- 0.0193ms以获取两种语言版本的版本计数。加载项目的时间:2.0533毫秒。兰斯:恩,德,德
- 0.0201ms以获取1语言版本的版本计数。加载项目的时间:4.7689ms。兰斯:嗯
- 3.4936ms以获取8种语言版本的版本计数。加载项目的时间:8.9118ms。语言:es es、es MX、sv SE、en、it、pt BR、fr fr、de
- 0.9966ms以获取7种语言版本的版本计数。加载项目的时间:1.6489ms。语言:es es,es MX,en,it,fr fr,de,ro
- 1.0875ms以获取6种语言版本的版本计数。加载项目的时间:3.1538ms。Langs:es-es,es-MX,恩,it,fr-fr,de-de
- 0.5891ms以获取5种语言版本的版本计数。加载项目的时间:1.4402ms。Langs:es MX,恩,it,fr fr,de
- 2.2096ms以获取4种语言版本的版本计数。加载项目的时间:9.8701ms。兰斯:恩,德,雅,日,达
- 0.9255ms以获取3种语言版本的版本计数。加载项目的时间:2.5175毫秒。Langs:en,de,ja,JP
- 0.7606ms以获取两种语言版本的版本计数。加载项目的时间:2.2407ms。兰斯:恩,德,德
- 1.9032ms以获取1种语言版本的版本计数。加载项目的时间:5.0206毫秒。兰斯:嗯 后续加载-项已缓存 在本例中使用ItemManager.GetVersions(item,lang)。理论上,GetItem应该给出类似的结果,因为后续加载会利用缓存
- 0.569ms以获取8种语言版本的版本计数。加载项目的时间:0.0372ms。语言:es-es、es MX、sv SE、en、it、pt BR、fr fr、de
- 0.0429ms以获取7种语言版本的版本计数。加载项目的时间:0.0475ms。语言:es es,es MX,en,it,fr fr,de,ro
- 0.025ms以获取6种语言版本的版本计数。加载项目的时间:0.0247ms。Langs:es-es,es-MX,恩,it,fr-fr,de-de
- 0.0239ms以获取5种语言版本的版本计数。加载项目的时间:0.0201ms。Langs:es MX,恩,it,fr fr,de
- 0.0342ms以获取4种语言版本的版本计数。加载项目的时间:0.0216ms。兰斯:恩,德,雅,日,达
- 0.0258毫秒以获取3种语言版本的版本计数。加载项目的时间:0.0197ms。Langs:en,de,ja,JP
- 0.0228ms以获取两种语言版本的版本计数。加载项目的时间:0.019ms。兰斯:恩,德,德
- 0.0228ms以获取1种语言版本的版本计数。加载项目的时间:0.0178ms。兰斯:嗯