获取组件的根发布

时间:2012-10-29 23:44:10

标签: tridion tridion-2011

让我们假设这个问题有以下出版物。

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

...

...

...

70 Web - > TCM:0-121-1

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

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

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

有人可以建议吗?

1 个答案:

答案 0 :(得分:7)

您需要查看Component的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在其拥有的存储库的上下文中。