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

Kre*_*ova 3 tridion tridion-2011

有谁知道我可以找到使用核心服务中支持SDL Tridion儿童出版物基于共享或局部组件的URI父组件的URI?

Nun*_*res 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();
}
Run Code Online (Sandbox Code Playgroud)

TcmUri班是你可以从你的项目中引用太Tridion.Common.dll的一部分.


And*_*huk 5

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

var parentComponentid = ClientAdmin.GetTcmUri(component.Id, component.BluePrintInfo.OwningRepository.IdRef, null);
Run Code Online (Sandbox Code Playgroud)

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