让我们假设这个问题有以下出版物。
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(),它返回一个包含所有蓝图层次结构的列表。我可以从这个列表中获得第一项,以获得实际创建它的出版物的这个组件。
由于我必须在很多地方调用此方法,我只想检查是否还有其他直接/更好的方法来完成此操作。
有人可以建议吗?
答案 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在其拥有的存储库的上下文中。