1つのSitecoreインストールから2つのサイトを実行したいと考えています。Sitecore言語複数のサイトを埋め込む
最初のサイトは英国英語のみですので、その言語をファイルパスに含めません。 languageEmbedding=never
2番目のサイトは複数の言語で作成され、その言語をファイルパスに含める必要があります。 languageEmbedding=always
複数のリンクマネージャを定義し、特定のリンクマネージャを使用するようにサイトを設定する方法はありますか?
1つのSitecoreインストールから2つのサイトを実行したいと考えています。Sitecore言語複数のサイトを埋め込む
最初のサイトは英国英語のみですので、その言語をファイルパスに含めません。 languageEmbedding=never
2番目のサイトは複数の言語で作成され、その言語をファイルパスに含める必要があります。 languageEmbedding=always
複数のリンクマネージャを定義し、特定のリンクマネージャを使用するようにサイトを設定する方法はありますか?
私は、両方のシナリオをサポートするカスタムリンクマネージャを作成することが最善の方法であることを発見しました。次に、言語が埋め込まれているかどうかを定義するサポート設定を行います。
public class LanguageLinkProvider : LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions urlOptions)
{
urlOptions.SiteResolving = Configuration.Settings.Rendering.SiteResolving;
string sites = ConfigurationManager.AppSettings["EmbedLanguageInUrl"];
var splitSites = new List<string>();
if (!string.IsNullOrEmpty(sites))
splitSites = sites.Split(';').ToList();
if (splitSites.Contains(urlOptions.Site.Name))
urlOptions.LanguageEmbedding = LanguageEmbedding.Always;
else
urlOptions.LanguageEmbedding = LanguageEmbedding.Never;
return base.GetItemUrl(item, urlOptions);
}
}
デフォルトではありません。 しかし、LinkManagerはオーバーライド可能です。おそらく、サイトごとに異なる設定を選択し、これをオーバーライドされたLinkManagerにコーディングすることによって、動作を変更することができます。
素晴らしい解決策!私は自分自身について考えることができる唯一の人です。 –