c# - Sitecore 语言嵌入多个站点

标签 c# asp.net sitecore sitecore6

我希望通过一个 Sitecore 安装运行两个站点。

第一个站点将仅使用英国英语,因此我不会在文件路径中包含该语言。 languageEmbedding=never

第二个站点将使用多种语言,我需要在文件路径中包含该语言。 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);
    }
}

关于c# - Sitecore 语言嵌入多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570360/

相关文章:

c# - 访问 ASP.NET Web 用户控件的内部值

c# - 将 ListItems 从一个列表框复制到另一个列表框

网站核心。从占位符读取项目

Sitecore 在选定内容项上向用户隐藏发布按钮

c# - 如何从 emgu cv 中的网络摄像头获取视频流?

c# - 在将日期时间插入 SQL Server 数据库之前验证日期时间

C# 创建数组数组

没有 Blazor 的 C# WASM

asp.net - 两个 ASP.NET 应用程序可以在单个 IIS 服务器上共享域名吗?

c# - 从 Glass.Mapper.Sitecore 升级到 Glass.Mapper.Sc 时缺少 InstanceContext