我在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"/>
答案 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
模块。因为它涵盖了你的一些场景。