3

有谁知道如何使用核心服务在 SDL Tridion 的子出版物中基于共享或本地化组件的 URI 找到父组件的 URI?

4

2 回答 2

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

于 2013-02-07T14:18:17.287 回答
5

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

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

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

于 2013-02-07T14:54:00.240 回答