3

コアサービスを使用してSDLTridionの子パブリケーションで共有またはローカライズされたコンポーネントの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 に答える