2016-11-28 72 views
0

我有一个网站让我们说www.abc.com/和其他网站可以说www.abc.com/blog/ 这里我想维护语言cookie时,请求是就像www.abc.com/pt-br, 那么cookie会有pt-br值,如果请求去www.abc.com/blog/en这将保持en的cookie,并且我回到第一个站点它应该显示我的pt-br的cookie,而不是en.I的cookie。我想为此维护自定义cookie,它存储了this.so的语言值,我应该如何实现这一点,任何人都可以帮助我解决这个问题?从一个网站导航到其他网站时维护语言cookie

+0

您可以在会话中存储语言设置,这将在整个域中传递给该用户。 – Fuzzybear

+2

你的意思是应用程序? 'www.abc.com /'是和'www.abc.com/blog /'相同的网站,因此这两个cookie都可以在这个网站的根目录下工作。如果你想为不同的网站(例如www.abc.com /'和www.xyz.com)这样做,那就完全不同了。 –

+0

这两个网站都是同一个Sitecore实例的一部分吗?如果是这样,他们是来自同一个网站定义还是单独的网站定义? –

回答

2

如果www.abc.com和www.abc.com/blog是sitecore.config中的不同网站,sitecore会存储不同的语言cookie(网站#lang)。你不需要做任何事情。

为了使www.abc.com/blog为不同的网站,你应该在“网站”部分添加站点节点如下图所示:

<site name="AbcBlog" virtualFolder="/blog" physicalFolder="/blog" rootPath="/sitecore/content/Home/Blog" /> 

那么你需要的功能将Sitecore的开箱即用的功能,可以实现

+0

我不想使用多个sites.this是相同的网站,如www.abc.com/和博客www.abc.com/blog。 情景:1)当我在www.abc.com/en时,lang的cookie被设置为en,然后我去www.abc.com/pt-br,然后lang cookie是pt-br.2)我将导航到www.abc.com/pt-br/blogs,然后lang cookie将被设为pt-br,然后我将自定义cookie设置为en.loghere博客网站上有徽标,默认导航到en,所以当我点击该徽标应该重定向到pt-br,而不是en,所以我该如何处理? –

+0

为什么你要设置自定义cookie来登录你的point2?为什么logo设置为en?就像你说的语言cookie设置为pt-br,那么徽标URL应该是pt-br尝试检查如何获取徽标的URL? –

+0

有要求徽标应该默认在EN和当我们在任何语言的博客页面,标识总是默认语言,但当我们在其他语言,当我点击该标志,我不想重定向为了en,我想重定向在那种特定的language.can你请帮我到这个或提供任何解决方案呢? –

0

正如Dheeraj所提到的,这对于Sitecore来说基本都是开箱即用的功能。

在web.config中保留博客和主站点作为单独的<site>定义将是最容易的,因此它们都可以维护自己的cookie。即使这两者都是同一内容分支的一部分,您也可以执行此操作,例如

<site name="MainSite" 
     virtualFolder="/" 
     physicalFolder="/" 
     rootPath="sitecore/content/AbcSite" /> 
<site name="Blog" 
     virtualFolder="/blog" 
     physicalFolder="/blog" 
     rootPath="sitecore/content/AbcSite" /> 

提供两个站点有一个语言设置Cookie,你可能使从一个链接到其他的东西,如

var otherSiteLanguage = //retrieve language from cookie 
var options = Sitecore.Links.LinkManager.GetDefaultUrlOptions(); 
options.Language = otherSiteLanguage; 
Sitecore.Links.LinkManager.GetItemUrl(item, options); 

显然,上述只适用于情况下,当你知道的链接将从一个站点到另一个站点,因此可能对站点徽标链接等有用,但对于富文本字段内的链接不起作用。

如果博客和主站点由相同的<site>定义处理并且无法更改,那么存储在cookie中的语言将会持续存在于两个站点中,因此,更改主站点的语言会更改语言博客,反之亦然。在这种情况下,如果现有站点不支持Cookie中保存的语言,则可能最好提供某种语言回退方案。您可以通过创建LanguageResolver处理器的覆盖版本(Sitecore.Pipelines.HttpRequest.Sitecore.Pipelines.HttpRequest, Sitecore.Kernel)在httpRequestBegin管道中执行此操作。

+0

我不想使用多个sites.there是相同的网址,如www.abc.com/和博客www.abc.com/blog。 –

+0

情景:1)当我在www.abc.com/en时,lang的cookie设置为en,那么我将访问www.abc.com/pt-br,然后lang cookie将显示为pt-br.2)我将导航到www.abc.com/pt-br/blogs,然后lang cookie将被设为pt-br,然后我将自定义cookie设置为en.loghere博客网站上有徽标,默认导航到en,所以当我点击该徽标应该重定向到pt-br,而不是en,所以我该如何处理? –