2012-03-05 2 views
3

하나의 Sitecore 설치에서 두 개의 사이트를 실행하려고합니다.Sitecore 언어 여러 사이트 포함하기

첫 번째 사이트는 영국 영어로만 제공되므로이 파일 경로에 해당 언어가 포함되지 않습니다. languageEmbedding=never

두 번째 사이트는 여러 언어로 작성 될 것이므로 파일 경로에 해당 언어를 포함해야합니다. languageEmbedding=always

여러 링크 관리자를 정의하고 특정 링크 관리자를 사용하도록 사이트를 구성 할 수있는 방법이 있습니까?

답변

5

두 시나리오를 모두 지원하는 사용자 지정 링크 관리자를 만드는 것이 가장 좋은 방법이라고 생각했습니다. 그런 다음 언어가 포함되는지 여부를 정의하는 지원 구성 설정을 갖습니다.

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

아니요, 기본적으로 아닙니다. 그러나 LinkManager는 대체 할 수 있습니다. 사이트마다 다른 설정을 선택하고이를 오버 라이드 된 LinkManager로 코딩함으로써 동작을 변경할 수 있습니다.

+1

위대한 해결책! 내가 생각할 수있는 유일한 사람. –

관련 문제