如何在 sitecore 中使用文化代号作为子站点
How to use culture code name as subsite in sitecore
我正在尝试使用文化代号 ("fr, lb, ru") 作为 sitecore www.mydomain 中的子站点 www.mydomain。com/ru,站点工作正常但内容未显示
发出此消息
"The current item does not have a version in "俄语:русский”。
要创建版本,请单击“添加新版本”或单击“版本”选项卡上的“添加”。
我的网站配置是
请帮助我使用 "ru, fr, sa, lb" 作为 sitecore 中的子站点名称。
谢谢。
我认为这里的问题是 LanguageResolver 管道处理程序期望 URL 的语言部分对应于完整的语言名称。所以在你的情况下,它会期望 www.mydomain.com/ru-RU
。创建一个继承自 Sitecore.Kernel.dll 中的 Sitecore 的自定义 LanguageResolver 非常简单。
配置元素是
<processor type="Sitecore.Pipelines.HttpRequest.LanguageResolver, Sitecore.Kernel"/>
您需要对其进行修补以引用您的新 class。您的新 class 将覆盖 Process
方法。
如果您不希望 Sitecore 将 URL 的第一部分解释为语言代码,而是解析为内容树中的项目,那么您可以更改以下内容:
<setting name="Languages.AlwaysStripLanguage" value="false" />
这可以防止 preprocessRequest 管道中的 StripLanguage 处理器从路径中删除语言并重写 URL。
您还应该更新 LinkProvider 的设置并设置 languageEmbedding=false
。
您可以在此博客中阅读更多详细信息 post:
Prevent the Sitecore ASP.NET CMS from Interpreting URL Path Prefixes as Language Names
我正在尝试使用文化代号 ("fr, lb, ru") 作为 sitecore www.mydomain 中的子站点 www.mydomain。com/ru,站点工作正常但内容未显示
发出此消息
"The current item does not have a version in "俄语:русский”。 要创建版本,请单击“添加新版本”或单击“版本”选项卡上的“添加”。
我的网站配置是
请帮助我使用 "ru, fr, sa, lb" 作为 sitecore 中的子站点名称。
谢谢。
我认为这里的问题是 LanguageResolver 管道处理程序期望 URL 的语言部分对应于完整的语言名称。所以在你的情况下,它会期望 www.mydomain.com/ru-RU
。创建一个继承自 Sitecore.Kernel.dll 中的 Sitecore 的自定义 LanguageResolver 非常简单。
配置元素是
<processor type="Sitecore.Pipelines.HttpRequest.LanguageResolver, Sitecore.Kernel"/>
您需要对其进行修补以引用您的新 class。您的新 class 将覆盖 Process
方法。
如果您不希望 Sitecore 将 URL 的第一部分解释为语言代码,而是解析为内容树中的项目,那么您可以更改以下内容:
<setting name="Languages.AlwaysStripLanguage" value="false" />
这可以防止 preprocessRequest 管道中的 StripLanguage 处理器从路径中删除语言并重写 URL。
您还应该更新 LinkProvider 的设置并设置 languageEmbedding=false
。
您可以在此博客中阅读更多详细信息 post: Prevent the Sitecore ASP.NET CMS from Interpreting URL Path Prefixes as Language Names