2016-11-28 6 views
0

私は1つのサイトでwww.abc.com/と言うことができ、他のサイトではwww.abc.com/blog/と言うことができます ここではリクエスト時に言語Cookieを維持したいwww.abc.com/pt-brのように クッキーにはpt-br値があります。リクエストがwww.abc.com/blog/enに行くと、これはenのクッキーを維持し、最初のサイトに戻りますそれは私にpt-brのクッキーとenのクッキーを示すべきではありません。私はthisのための言語価値を格納するこれのカスタムクッキーを維持したいと思います。1つのサイトから他のサイトに移動するときに言語クッキーを維持する

+0

セッションで言語設定を保存することができます。これはドメイン全体でそのユーザーに渡されます。 – Fuzzybear

+2

申し込みを意味しますか? 'www.abc.com /'は 'www.abc.com/blog /'と同じサイトであり、そのサイトのルートで動作するように設定されたクッキーは両方に表示されます。 '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" /> 

次に、あなたの必要な機能は、ボックス機能のうち、サイトコアによって達成されるであろう

+0

私は複数のサイトを使用したくありません。これはwww.abc.com/のような同じサイトで、ブログはwww.abc.com/blogです。 シナリオ:1)私がwww.abc.com/enに入っているときにlangのクッキーがenに設定されていれば、私はwww.abc.com/pt-brに行き、lang cookieはpt-br.2になります。私はwww.abc.com/pt-br/blogsに移動し、lang cookieはpt-brになります。私はカスタムcookieをen.thereに設定します。これはデフォルトでenにナビゲートされているブログサイトにあります。そのロゴはpt-brに転送する必要があり、enには転送しないでください。どうすればよいですか? –

+0

ポイント2にカスタムクッキーを設定する理由は何ですか?なぜロゴがenに設定されていますか?あなたは言語Cookieがpt-brに設定されているように、ロゴURLはpt-brにする必要があります。どのようにロゴのURLを取得していますか? –

+0

ロゴはenでデフォルトにする必要があり、ロゴが常にデフォルト言語になっている言語のブログページにあるときは、私たちが他の言語になっているときに、そのロゴをクリックするとリダイレクトしたくないenに、私はその特定の言語にリダイレクトしたいと思います。あなたは私にこれを手伝ってください。 –

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" /> 

は、言語のクッキーのセットを持っている、あなたは

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

ようなもので、一方から他方へのリンクをレンダリングする可能性が明らかに上記の専用ケースで動作しますあるサイトから別のサイトに移動するため、サイトのロゴリンクなどには便利ですが、リッチテキストフィールド内のリンクでは機能しません。

ブログとメインサイトが同じ<site>定義で処理され、それを変更できない場合、Cookieに保存されている言語は両方のサイトで維持されるため、メインサイトの言語を変更すると言語が変更されますブログとその逆。この場合、クッキーに保持されているものが現在のサイトでサポートされていない場合は、別の言語に切り替える何らかの言語フォールバックスキームを用意することをお勧めします。これは、LanguageResolverプロセッサのオーバーライドバージョン(Sitecore.Pipelines.HttpRequest.Sitecore.Pipelines.HttpRequest, Sitecore.Kernel)を作成することで、httpRequestBeginパイプライン内で行うことができます。

+0

私は複数のサイトを使用したくありません.www.abc.com/やブログwww.abc.com/blogなどの同じURLがあります。 –

+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.thereに設定します。これはデフォルトでenにナビゲートされているブログサイトにあります。そのロゴはpt-brに転送する必要があり、enには転送しないでください。どうすればよいですか? –

関連する問題