tridion - 获取组件的根发布

标签 tridion tridion-2011

让我们假设以下出版物涉及该问题。

20内容-> tcm:0-20-1







70网页-> tcm:0-121-1

我已经在( 20 Content )出版物下创建了一个组件,并且正在从其中一个子出版物( 70 Web )中发布该组件。我使用Dreamweaver模板编写UI,并从DWT调用C#自定义函数。发布时,此组件在组件表示中将称为121-432。有什么方法可以获取创建组件所在位置的根发布?那我应该得到20-432,而不是121-432。

我尝试了Component.GetBluePrintChain(),它返回了一个包含所有蓝图层次结构的列表。我可以从该列表中获得第一项,以在实际创建该出版物的情况下获得该组件。

由于必须在许多地方调用此方法,因此我只想检查是否有其他直接/更好的方法来完成此操作。

有人可以建议吗?

最佳答案

您将要查看组件的OwningRepository属性,因此:



var componentIdInOwningPublication = new TcmUri(
    component.Id.ItemId,
    ItemType.Component,
    component.OwningRepository.Id.ItemId
);

将其放入自定义的Dreamweaver可调用函数中,您应该会很好。

更新
还有一个称为CreateTcmUriForPublication的帮助程序方法可以进行翻译。因此,您也可以像这样调用该代码:

var componentIdInOwningPublication = TemplateUtilities.CreateTcmUriForPublication(
    component.OwningRepository.Id.ItemId,
    component.Id
);

但是,两个片段的最终结果是相同的:组件在其拥有的存储库的上下文中的TcmUri。

关于tridion - 获取组件的根发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131273/

相关文章:

events - Tridion 2011 工作流程次要版本使用事件处理程序自定义代码进行增量

pdf - Tridion 和 PDF(大容量)内容管理

tridion - 在 GetItems(filter) 调用之后在方法之间传递它们时访问 TOM.NET 对象的属性

tridion - SDL Tridion 组件和页面模板的工作流程用于什么?

tridion - 错误: Could not find default endpoint element that references contract

tridion - 创建一个从另一个组件复制字段值的组件

tridion - 使用 TcmUploadAssembly 上传 DD4T.Templates.dll 时出现错误 "Unable to load requested types"

tridion - 在 SDL Tridion 2011 中处理 Dreamweaver Template Building block 中的多个组件演示

tridion - Tridion 安装后面临的问题

tridion - 使用 Visual Studio 中的构建后事件在 Tridion 中上传 DLL 时出错