2014-09-24 3 views
0

Sitecore의 ExpandDynamicLinks에 문제가 있습니다.Sitecore LinkManager ExpandDynamicLinks가 사이트 URL을 확인하지 못합니다.

siteResolvingtrue을 전달하는 다음 방법을 사용하고 있습니다. 문제는 약속 된대로 사이트가 해결되지 않는 것입니다.

bodyExpandedLinks = Sitecore.Links.LinkManager.ExpandDynamicLinks(email.Body.Value, true); 

위의 이메일 본문을 제외한 전체 사이트에서 원하는 사이트이므로 사이트를 확인하지 않기로했습니다.

alwaysIncludeServerUrl="false" 

누구나 강제하는 방법을 알고 있습니까?

고맙습니다 ...

답변

0

ExpandDynamicLinks으로 전화하기 전에 AlwaysIncludeServerUrl이 거짓으로 설정되어 있는지 확인하는 것이 좋습니다. False이면 Sitecore.Links.UrlOptions.DefaultOptions.AlwaysIncludeServerUrl = true을 명시 적으로 호출 한 다음 ExpandDynamicLinks을 호출 한 후 다시 False로 설정할 수 있습니다.

+0

을이 속성은 읽기 전용입니다 :/ 는 "건물 또는 인덱서 'Sitecore.Links.LinkManager.AlwaysIncludeServerUrl이'에 할당 할 수 없습니다 - 그것은 읽기 전용" – RobertoBr

+0

내 대답이 업데이트되었습니다. 이 방법이 효과가 있는지는 잘 모르지만 시도해 볼 가치가 있습니다. –

+0

그게 효과가 있습니다! 그리고 서버 URL을 포함하기 위해서만 새로운 linkManager 구성을 갖는 것이 좋습니다. 감사 – RobertoBr

0

대체 방법을 발견했습니다.

같은 구성이지만 always로 설정 한 alwaysIncludeServerUrl이라는 추가 링크 공급자를 추가했습니다.

<add name="sitecore_expandlinks" alwaysIncludeServerUrl="true" (...) > 

그렇다면 API를 사용하는 제공 업체가 있습니다. 다른 사람이 더 응집력있는 옵션이있는 경우

bodyExpandedLinks = Sitecore.Links.LinkManager.Providers["sitecore_expandlinks"].ExpandDynamicLinks(email.Body.Value, true); 

나는 많은

감사 감사하겠습니다.

0

나는이 게시물에 sitecore7 태그가 붙어 있지만 Sitecore 8.1에 대한 해결책을 공유하고 싶습니다. 나는 그것이 7을 위해 작동하는지 아닌지 모른다. 그것은 Sitecore.Links.LinkProvider.ExpandDynamicLinks()에서 적응 : Sitecore.Links.DynamicLink.BuildMediaUrl()Sitecore.Links.MediaLinkExpander.Expand() 완전히 자신의 UrlOptions 매개 변수를 무시하기 때문에 미디어 링크가 작동하지 않습니다

var linkParser = new LinkProvider.LinkParser(); 
var urlOptions = LinkManager.Provider.GetDefaultUrlOptions(); // returns a clone. 
urlOptions.SiteResolving = true; 
urlOptions.AlwaysIncludeServerUrl = true; 
text = linkParser.ExpandDynamicLinks(text, urlOptions); 

. 당신은 전체 미디어 URL을해야하는 경우,이 당신의 코드를 포장 :

using (new SettingsSwitcher("Media.AlwaysIncludeServerUrl", "true")) 
{ 
    phrase = linkParser.ExpandDynamicLinks(phrase, urlOptions); 
} 
관련 문제