我正在使用Sitecore,我想让我的网站多区域和多语言。
我希望网址采用以下格式:
http://www.example.com/ca/fr(语言区域)
我目前在我的配置中有这个:
<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。我不认为它被用于任何内容。
吉马
答案 0 :(得分:0)
您可能需要重新考虑使用此结构。我不知道您的要求,但您会遇到的第一个问题是默认的Sitecore行为。
例如,我有一个具有不同域名的网站:
如果我打电话给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
而不是所需的/ 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的语言版本控制 - 在这种方法中,您只需为每种语言创建新的站点节点。