5

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

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

…</p>

…</p>

…</p>

70 网络 -> 中医:0-121-1

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

我试过Component .GetBluePrintChain() ,它返回一个包含所有蓝图层次结构的列表。我可以从此列表中获取第一项,以获取该组件及其实际创建的出版物。

由于我必须在很多地方调用这个方法,我只是想检查是否有任何其他直接/更好的方法来完成这项工作。

任何人都可以建议吗?

4

1 回答 1

7

您需要查看OwningRepositoryComponent 的属性,因此:

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 在其拥有的存储库的上下文中。

于 2012-10-30T01:06:08.790 回答