基于子组件的URI检索BluePrinted组件的父URI

时间:2013-02-07 14:05:58

标签: tridion tridion-2011

是否有人知道如何使用核心服务在SDL Tridion中基于子发布中的共享或本地化组件的URI查找父组件的URI?

2 个答案:

答案 0 :(得分:6)

您可以使用ComponentData.BluePrintInfo.OwningRepository.IdRef获取“拥有”该组件的出版物的TcmUri。这是第一个“上升”的出版物,其中组件被创建或本地化。

然后你可以使用这样的东西在正确的上下文中获得组件Uri:

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的一部分,您也可以从项目中引用它。

答案 1 :(得分:5)

这是比Nuno提议的更简单的方法,你不需要引用任何dll

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

GetTcmUri方法适用于获取任何TcmUris - 只需传递您想要项目的出版物ID和当前出版物中项目的ID。这样,您还可以在特定子出版物中找到给定项目的ID