如果给定语言不存在,Sitecore 获取英文项目的最佳方式

Sitecore best possible way to get Item in English if its not present in the given language

在我的网站上,每个项目都有英文版本。现在,如果 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";
}

这是实现我想要的正确方法吗?因为我担心的是我必须使用此代码来访问每个项目。是否有任何全局设置或类似的东西,以便我可以在 desired 语言中不存在的情况下以 'English' 语言获取该项目。

您可以为您的案例使用后备语言模块。

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

来自第二篇博客 post 看起来正在使用 Sitecore 7.2。

随着 Sitecore 7 成为标准,Sitecore 8 即将面世,我认为是时候 运行 进行一些测试并确保所有这些仍然有效最新公开发布的版本:Sitecore 7.2 Update 2(修订版 140526)。

您应该检查 Sitecore 中名为 Language Fallback 的东西。

有很多关于它的博客 post,例如:

http://jonathandeveloper.com/2014/07/sitecore-7-language-fallback-revisited-and-glass/

市场上还有一个 Language Fallback Sitecore module(但根据描述只能与 Sitecore 6 一起使用)。