【问题标题】:Sitecore Language Embedding multiple sitesSitecore 语言嵌入多个站点
【发布时间】:2012-03-05 16:39:41
【问题描述】:
我希望通过一个 Sitecore 安装运行两个站点。
第一个站点将仅使用英国英语,因此我不会在文件路径中包含该语言。 languageEmbedding=never
第二个站点将使用多种语言,我需要在文件路径中包含该语言。 languageEmbedding=always
有没有一种方法可以定义多个链接管理器并将站点配置为使用特定的链接管理器?
【问题讨论】:
标签:
c#
asp.net
sitecore
sitecore6
【解决方案1】:
我发现最好的方法是创建一个支持这两种方案的自定义链接管理器。然后有一个支持配置设置来定义是否嵌入语言。
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);
}
}
【解决方案2】:
不,默认情况下不是。
但是 LinkManager 是可覆盖的。您可能可以通过为每个站点选择不同的配置并将其编码到覆盖的 LinkManager 中来更改行为。