2014-12-03 5 views
9

"urllink"는 Sitecore 색인의 ComputedIndexField입니다.Sitecore 색인의 urllink는 "/ sitecore/shell/~/media/..."와 함께 미디어 URL을 반환합니다.

미디어 항목에 대해 색인을 다시 작성하면 색인에 저장되는 URL은 "/ ~/media/..."로 시작하며 올바른 것입니다.

인덱스 전략이 onPublishEndSync이고 미디어 항목을 다시 게시하는 경우 URL은 "/ sitecore/shell/~/media/..."로 시작합니다.

Sitecore 소스 코드를 확인했는데 그 차이는 Context.Site입니다. 인덱스를 다시 작성할 때 null이므로 접두사로 "/"를 사용합니다. 게시를 할 때는 "Sitecore 셸"입니다. 따라서 Sitecore Shell의 Context.Site.VirtualFolder는 "/ sitecore/shell"입니다.

저는 이것이 Sitecore 버그라고 생각합니다. ATM 자신의 urlLink ComputedIndexField 클래스를 만들고 AbsolutePath = false로 MediaUrlOptions를 수정으로 사용하려고합니다.

내가 무엇을 놓치고 실제로 Sitecore 문제가 아닌지 알고 싶습니까?

감사합니다.

+1

유효성을 검사하려면 support.sitecore.net에 제출하십시오. 나에게 벌레처럼 들린다. 당신의 부분에 대한 좋은 문제 해결! –

+0

감사합니다. 나는 이미 그 작업을 완료했습니다. 응답을 기다리고 있습니다. – zhankezk

답변

4

업데이트를 제공하기 만하면됩니다. Sitecore에 의해 확인 된 것은 버그입니다. 그들은 해결 방법을 찾고 있으며, 내가 할 때 여기서 업데이트 할 것입니다.

감사합니다.

------------- 업데이트 : 15/12/2014 ----------------------

티켓은 이제 닫혔습니다. Sitecore의 해결책은 미래에 색인에서이 "urlLink"필드를 제거하는 것입니다 (그들은 요청할 것이라고 말했습니다).

URL은 현재 사이트 컨텍스트를 기반으로 LinkManager에 의해 생성되어야합니다. 그러나 인덱싱하는 동안 사이트 컨텍스트가 존재하지 않습니다 (컨텐트 항목의 경우 경로를 확인할 수 있지만 미디어 항목의 경우 확인할 수는 없습니다).

물론 다른 솔루션이 있습니다. 자신의 computeredField를 만들어 미디어 항목의 논리를 재정의하십시오. Sitecore에 동의하지만이 필드를 색인에서 제거하는 것이 더 적절하다고 느낍니다.

그 중에서도 urlLink 필드를 사용하는 초기 이유는 검색을 수행하는 동안 Sitecore를 완전히 쿼리 할 필요가 없기 때문입니다. 모든 내용은 색인의 저장된 필드 값에서옵니다. 그러나 반면에 페이지 매김은 일반적으로 검색 결과에 사용되므로 Sitecore에 대한 요청이 있어도 그렇게 많이는 안됩니다.

그게 지금 모두 다가 더 많은 의견을보고 기꺼이 토론 해 주셔서 감사합니다!

+1

색인에서 이미지의 URL을 원한다면 어떻게해야합니까? Sitecore 7.5를 사용하고 있으며 색인에 계산 된 필드가있어 더 작은 버전의 큰 이미지 (검색 결과 용)에 대한 링크를 반환합니다. 다음은 계산 된 필드에서 사용하는 코드입니다. return HashingUtils.ProtectAssetUrl (Sitecore.StringUtil.EnsurePrefix ('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl ( (ImageField) myItem.Fields [ "안녕하세요. Res Image "]). MediaItem)) +"? w = 266 & h = 266 "); –

+0

위의 코드를 사용하여이 질문에 게시 된 것과 정확히 같은 문제를 발견했습니다. –