2016-11-28 41 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,所以我該如何處理? –