-1

我们需要确定是谁触发了 Tridion 2009 页面的发布:编辑器或代码。

请使用作为示例:从 A 继承的出版物 A 出版物 B

现在,当我们使用“也在子出版物中发布/取消发布”在出版物 A 中发布页面时,将为出版物 A 中的页面以及出版物 B 中的页面触发事件系统。

在这种情况下,我们只想在出版物 A 的页面上使用事件系统

就像是:

public override void OnPageSetPublishedToPost(Page page, string publicationTarget, bool published, string user)
{
  if (!page.IsTriggeredByParent)
  {
  // do stuff
  }
}

问题是我们不知道如何确定“IsTriggeredByParent”的值。

感谢您的时间

4

1 回答 1

4

在 SDL Tridion 2009 中这是不可能的,基于 COM 的事件系统无法识别事件的来源。

在 SDL Tridion 2011 .NET 事件系统中,您可以访问事件堆栈。这意味着您可以检测某个操作是否作为另一个操作的一部分执行(例如,在 VersionedItem 上使用参数 true 进行保存也将签入该项目并将该事件作为 Save 事件的一部分引发)。所以为了完成你的任务,我认为你需要升级。

于 2012-03-20T12:31:14.663 回答