获取组件的根发布

Bal*_*aji 5 tridion tridion-2011

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

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

...

...

...

70网 - > tcm:0-121-1

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

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

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

谁有人建议?

Fra*_*len 7

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

var componentIdInOwningPublication = new TcmUri(
    component.Id.ItemId,
    ItemType.Component,
    component.OwningRepository.Id.ItemId
);
Run Code Online (Sandbox Code Playgroud)

把它放到一个自定义的Dreamweaver可调用函数中,你应该很高兴.

更新 还有一个调用辅助方法CreateTcmUriForPublication来执行转换.所以你也可以像这样调用那个:

var componentIdInOwningPublication = TemplateUtilities.CreateTcmUriForPublication(
    component.OwningRepository.Id.ItemId,
    component.Id
);
Run Code Online (Sandbox Code Playgroud)

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

  • 同意检查OwningRepository,但我认为你的参数顺序错了.在TOM.NET中,签名是`public TcmUri(int itemId,ItemType itemType,int publicationId)`由于某种原因. (2认同)