据我所知,GetBluePrintChain
当您站在蓝图顶部时,这些方法旨在俯视蓝图。因此,在您的情况下,您应该在其拥有的发布上下文中获取该项目,然后调用GetBluePrintChain
.
Item item = package.GetByName("Component");
Component component = new Component(item.GetAsXmlDocument().DocumentElement,
engine.GetSession());
TcmUri id = TemplateUtilities.CreateTcmUriForPublication(
component.OwningRepository.Id.ItemId, component.Id);
var blueprintchain = ((Component)engine.GetObject(id)).GetBluePrintChain();
package.PushItem(package.CreateStringItem(ContentType.Text,
blueprintchain.ToString()));
package.PushItem(package.CreateStringItem(ContentType.Text,
""+System.Linq.Enumerable.Count(blueprintchain)));
foreach (var item in blueprintchain)
{
package.PushItem(package.CreateTridionItem(ContentType.Component, item));
}
我只是在两种情况下将上述 C# 片段作为 TBB 运行:
- 在共享组件的子出版物中
- 在本地化组件的子出版物中
在情况 1 中,blueprintchain
将包含一个项目:共享组件。在情况 2 中,blueprintchain
将包含两个项目:共享组件和本地化组件。