多区域和语言网站Sitecore

时间:2018-02-27 13:13:02

标签: sitecore multisite

我正在使用Sitecore,我想让我的网站多区域和多语言。

我希望网址采用以下格式:

http://www.example.com/ca/fr(语言区域)

http://www.example.com/ca/en

我目前在我的配置中有这个:

 <site patch:before="site[@name='website']" 
  name="Canada" enableTracking="true" 
  virtualFolder="/ca" physicalFolder="/ca" 
  language="en-gb" 
  rootPath="/sitecore/content/CanadaSite" 
  startItem="/home" database="master" 
  domain="extranet" allowDebug="true" 
  cacheHtml="true" htmlCacheSize="50MB" registryCacheSize="0" 
  viewStateCacheSize="0" xslCacheSize="25MB" filteredItemsCacheSize="10MB" 
  enablePreview="true" enableWebEdit="true" enableDebugger="true" 
  disableClientData="false" cacheRenderingParameters="true" 
  renderingParametersCacheSize="10MB" />

我的项目目前有一个复杂功能,还安装了美国版的英语,但我总是希望路径为/ en。我不认为它被用于任何内容。

吉马

2 个答案:

答案 0 :(得分:0)

您可能需要重新考虑使用此结构。我不知道您的要求,但您会遇到的第一个问题是默认的Sitecore行为。

例如,我有一个具有不同域名的网站:

  • mysite.com - &gt;默认语言:&#34; en&#34;
  • mysite.fr - &gt;默认语言:&#34; fr-FR&#34;
  • mysite.de - &gt;默认语言:&#34; de-DE&#34;

如果我打电话给mysite.com,那么将提供带有英语的项目。 如果我打电话给mysite.com/fr或mysite.com/fr-fr,那么将提供法语内容(如果有的话,取决于语言配置)。

所以你应该小心你的网址路径

mysite.com/[language-culture]/page name
mysite.com/[language]/page name

这是Sitecore的默认行为。

无论如何,我不知道您的要求,最后,您可以定义一个额外的站点配置,并将其映射到sitecore中用于英语版本的同一节点。

<site patch:before="site[@name='website']" 
name="CanadaEnglish"
language="en" 
virtualFolder="/ca" 
physicalFolder="/ca"    
rootPath="/sitecore/content/CanadaSite" ...

<site patch:before="site[@name='website']" 
name="CanadaEnglishUS"
language="en-us" 
virtualFolder="/ca" 
physicalFolder="/ca"    
rootPath="/sitecore/content/CanadaSite" ...

诀窍是给新名称如 name =&#34; CanadaEnglish&#34; name =&#34; CanadaEnglishUS&#34;

答案 1 :(得分:0)

多语言网站的URL的默认sitecore实现是 http:////

在您的情况下,如果您将virtualFolder设置为/ ca,那么您的网址就是 http://www.example.com/fr/ca

http://www.example.com/en/ca

而不是所需的/ ca /​​ fr和/ ca /​​ en

默认的sitecore行为也是显示在网址中。 例如:fr-ca。但是,编写自定义链接解析器很容易,而不是/ fr-ca,自定义链接解析器将输出/ fr。但是,您在虚拟文件夹名称之前的原始语言问题将无法解决。

我不建议您在virtualFolder名称后将自定义链接解析器更改为输出语言。我没有尝试过这样的定制,也不知道你可能会遇到什么陷阱,需要确保预览,体验编辑等都可以使用这样的定制。

您可以研究的唯一另一件事是在内容树中创建完全不同的sitenode,然后您需要相应的站点定义来指向该站点节点。在这种方法中,网站定义中的虚拟文件夹将是&#34; / ca /​​ en&#34;,&#34; / ca /​​ fr&#34;等等如下所示

  site patch:before="site[@name='website']" 
  name="CanadaFrench"
  language="fr-ca" 
  virtualFolder="/ca/fr" 
  physicalFolder="/ca/fr"    
  rootPath="/sitecore/content/CanadaFrenchSite" 

  site patch:before="site[@name='website']" 
  name="CanadaEnglish"
  language="en-us" 
  virtualFolder="/ca/en" 
  physicalFolder="/ca/en"    
  rootPath="/sitecore/content/CanadaEnglishSite" 

此方法可行,您只需将每个网站配置为languageEmbedding =&#34; never&#34;。但是,我也不推荐这种方法,因为我们完全绕过了sitecore的语言版本控制 - 在这种方法中,您只需为每种语言创建新的站点节点。