网址核心国家/地区ISO在网址中

时间:2011-10-12 13:47:56

标签: url-routing sitecore sitecore6

我在sitecore中创建了一个包含多种语言的网站...我的内容编辑器(系统>语言)我指定了三种语言(荷兰语,英语和德语)。不,我有2个问题。

当一个项目有,例如:英文版但没有德语和荷兰语版本,我输入德国网站的地址:www.testsite.com/de我得到德国网站,但没有内容。在这种情况下,我想要显示404页面。

另一个问题是当我使用未在系统>中指定的语言时语言和项目仍然是一个空站点。在这种情况下,我还想要显示404页面。 Sitecore只要是有效的ISO代码就会显示该页面。

我正在使用Sitecore 6.4

有没有人解决这些问题?

提前致谢!

mrtentje

我的LinkManager在Web.config中指定如下:

<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="asNeeded" languageLocation="filePath" shortenUrls="true" useDisplayName="false"/>

2 个答案:

答案 0 :(得分:0)

不幸的是,您必须在Sitecore中手动管理这两种方案,它们都有非常简单的解决方案,但需要您进行一些开发。

对于第一个(访问没有翻译的页面)我认为您需要扩展Sitecore中的当前ItemResolver,并明确检查已选择的语言是否存在版本。我自己没有实现,但这就是我处理它的方式。

第二种(只接受某些语言)是我处理过的事情,而Sitecore无法自行处理它真的让我感到困扰(虽然它可能会这样做但我错过了它)。为此,我在LanguageResolver调用PermissableLanguageChecker之后立即在管道中创建了一个步骤。这将检查请求的当前语言是否是某些允许值之一,如果不是,则将语言设置回默认语言,或者在您的情况下抛出404。

对于“允许值”,我从站点配置中读取它们,其中包含一个新属性:

<site name="website" ... permissableLanguages="pl-PL,en" language="pl-PL" ... />

这个permissableLanguages属性很方便,因为我们也可以在以后向用户提供语言选择控件时在网站中使用它。

答案 1 :(得分:0)

您可能需要查看Sitecore共享源库中的Language Fallback模块。因为它涵盖了你的一些场景。

http://trac.sitecore.net/LanguageFallback