Sitecore Language Встраивание нескольких сайтов - PullRequest
3 голосов
/ 05 марта 2012

Я хочу запустить два сайта из одной установки Sitecore.

Первый сайт будет только на английском языке в Великобритании, поэтому я не буду включать язык в путь к файлу.languageEmbedding=never

Второй сайт будет на нескольких языках, и мне нужно включить язык в путь к файлу.languageEmbedding=always

Есть ли способ определить несколько менеджеров ссылок и настроить сайты для использования определенного менеджера ссылок?

Ответы [ 2 ]

5 голосов
/ 06 марта 2012

Я обнаружил, что лучшим способом было создать собственный менеджер ссылок, который поддерживает оба сценария. Затем укажите вспомогательный параметр конфигурации, который определяет, является ли язык встроенным.

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);
    }
}
3 голосов
/ 05 марта 2012

Нет, не по умолчанию.Но LinkManager можно переопределить.Возможно, вы можете изменить поведение, выбрав другую конфигурацию для каждого сайта и закодировав ее в переопределенный LinkManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...