有谁知道如何使用核心服务在 SDL Tridion 的子出版物中基于共享或本地化组件的 URI 找到父组件的 URI?
问问题
746 次
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 回答