- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取继承自RepositoryLocalObject(例如Component)的父项列表。因此,如果我的发布ID为1,其组件为tcm:1-80,其子发布ID为2,则该组件在子发布中以tcm:2-80的形式共享。因此,我想让tcm:2-80的父级或树中向上移动的任何级联。
我已经在可以正常工作的组件的本地副本上尝试过GetBluePrintChain()方法。但是,在共享组件上,它返回InvalidActionException:“此项目是共享的”。该文档提到共享对象上引发了此异常。但这有什么意义呢?显然,如果任何具有超出自身蓝图链的项目都将被共享(或成为本地副本)。因此,对我而言,让这种方法在具有蓝图链的对象上抛出异常是没有意义的。看来是矛盾的。
我的问题与Getting root publication of component有关,但有所不同。我需要了解为什么在共享项上引发此异常。有人可以解释一下,也许分享一个用例来支持它吗?
最佳答案
据我所知,GetBluePrintChain
方法用于当您站在BluePrint顶部时查看它。因此,在您的情况下,应该在项目所属的发布上下文中获取该项目,然后调用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));
}
blueprintchain
将包含一个项目:共享组件。在情况2中,blueprintchain
将包含两项:共享组件和本地化组件。 关于Tridion RepositoryLocalObject.GetBluePrint链方法(BluePrint ChainFilter)在共享项上引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131489/
我正在尝试获取继承自RepositoryLocalObject(例如Component)的父项列表。因此,如果我的发布ID为1,其组件为tcm:1-80,其子发布ID为2,则该组件在子发布中以tcm:
我是一名优秀的程序员,十分优秀!