c# - 如果项目没有以给定语言显示,Sitecore 获取英文项目的最佳方式

标签 c# sitecore sitecore7.2

在我的网站中,每个项目都有英文版本。现在,如果 Content Language ='Danish' 的用户想要访问“Danish”语言中不存在的项目。用户实际上什么也看不到,我想做的是,如果该项目不存在所需语言,则获取它的英文版本。

我这样做是为了实现我的目标:

string itemId = "{05B1C498-39D1-40D6-B454-2A3277A6DDF9}";
Item versionItem = Sitecore.Context.Database.GetItem(itemId);
if (versionItem.Versions.Count > 0)
    lblOutput.Text = "Item does not exist in desired language";
else
{
    versionItem = contextDatabase.GetItem(itemId, Sitecore.Data.Managers.LanguageManager.GetLanguage("en"));
    lblOutput.Text = "Here is the item in default English language";
}

这是实现我想要的目标的正确方法吗?因为我担心的是我必须使用此代码来访问每个项目。是否有任何全局设置或类似的东西,以便我可以以“英语”语言获取该项目(如果它不存在于所需语言中)。

最佳答案

您可以针对您的情况使用后备语言模块。

https://marketplace.sitecore.net/en/modules/language_fallback.aspx

http://www.sitecore.net/Learn/Blogs/Technical-Blogs/Elizabeth-Spranzani/Posts/2014/10/Fallback-followup.aspx

http://www.sitecore.net/Learn/Blogs/Technical-Blogs/Elizabeth-Spranzani/Posts/2014/03/Fallback-Series-Post-2.aspx

从第二篇博客文章来看,似乎正在使用 Sitecore 7.2。

随着 Sitecore 7 现已成为常态,并且即将推出 Sitecore 8,我认为是时候运行一些测试并确保所有这些仍然适用于最新公开发布的版本:Sitecore 7.2更新 2(修订版 140526)。

关于c# - 如果项目没有以给定语言显示,Sitecore 获取英文项目的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34990001/

相关文章:

c# - MongoDB Unable to determine the serialization information for the expression 错误

sitecore - 选择媒体在 Sitecore 中没有返回任何项目 - 如何添加构面?

c# - 如何在 Sitecore 中限制发布而不删除

security - 限制站点核心发布

Sitecore BucketItem 文件夹版本控制问题

c# - 如何使用 C# 从 ASP.NET 检索 MAC id

c# - 如何找到当前函数调用者的对象实例的类型?

c# - 单元测试 COM 事件?

asp.net - 带有集成管道的 IIS 7.5 中的页面 404,使用经典管道很好

c# - sitecore 缩短网址似乎不起作用