让我们假设以下出版物涉及该问题。
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/