2013-02-07 10 views
3

SDL Tridion의 하위 게시에서 공유 또는 현지화 된 구성 요소의 URI를 기반으로 상위 구성 요소의 URI를 어떻게 찾을 수 있는지 아는 사람은 누구입니까? 핵심 서비스?하위 구성 요소의 URI를 기반으로 BluePrinted 구성 요소의 상위 URI 검색

+0

부모를 정의하십시오. 항목의 첫 번째 로컬 복사본 또는 맨 위에있는 부모입니까? 부모 출판물의 ID를 알고 있습니까? –

+0

혼란스러운 용어 : 구성 요소의 부모는 폴더입니다. 그래서 당신은 정말로 무엇을 얻으 려하고 있습니까? 아래의 해답은 부모 Blueprinted 간행물에서 동일한 구성 요소를 찾고 있다고 가정합니다. –

+0

수정 해 주셔서 감사합니다. 나는이 질문에 대한 전체적인 생각이 BluePrinted Publication에 대한 설명이라고 생각합니다. –

답변

5

여기가 누누가 제안 된 것보다 더 간단한 방법이고 당신은

var parentComponentid = ClientAdmin.GetTcmUri(component.Id, component.BluePrintInfo.OwningRepository.IdRef, null); 

GetTcmUri 방법은 어떤 TcmUris을 얻기를위한 좋은 어떤 DLL을 참조 할 필요가 없습니다 - 당신이 당신의 품목을 원하는 단지 통과 게시 ID를 이드는 현재 출판물에 있습니다. 이 방법으로 특정 아동 출판물에서 특정 항목의 ID를 찾을 수도 있습니다

+0

이 경우 CLientAdmin은 무엇입니까? –

+0

CoreService 클라이언트 일뿐입니다. –

+0

이 방법이 효과적입니다. 다음 코드를 사용했습니다. session.Client.GetTcmUri (componentId, childComponent.BluePrintInfo.OwningRepository.IdRef, null); –

6

ComponentData.BluePrintInfo.OwningRepository.IdRef을 사용하면 해당 구성 요소를 "소유"하는 게시의 TcmUri를 얻을 수 있습니다. 이것은 구성 요소가 작성되거나 지역화 된 첫 번째 발행물 "going up"입니다.

그럼 당신은 올바른 상황에서 당신에게 구성 요소 열린 우리당을 얻기 위해이 같은 것을 사용할 수 있습니다

internal string GetUriInBlueprintContext(string itemId, string publicationId) 
{ 
    if (TcmUri.UriNull == itemId) 
     return null; 
    TcmUri itemUri = new TcmUri(itemId); 
    TcmUri publicationUri = new TcmUri(publicationId); 
    TcmUri inContext = new TcmUri(itemUri.ItemId, itemUri.ItemType, publicationUri.ItemId); 
    return inContext.ToString(); 
} 

TcmUri 클래스는 당신이 너무 프로젝트에서 참조 할 수 Tridion.Common.dll의 일부입니다.

+0

CoreService에 관한 질문이었습니다 –

+0

답변은 CoreService에 관한 것입니다 ... –

관련 문제