【问题标题】:Tridion 2009 - Determine who published a pageTridion 2009 - 确定谁发布了页面
【发布时间】:2012-03-20 09:33:57
【问题描述】:

我们需要确定是谁触发了 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”的值。

感谢您的宝贵时间

【问题讨论】:

  • 能否指定您正在使用的 Tridion 版本,以及您尝试使用的事件处理程序/触发器。
  • 我们使用的是 Tridion 2009。事件是:public override void OnPageSetPublishedToPost(Page page, string publicationTarget, bool published, string user) 在页面发布后调用。在内部,我们需要确定发布行为是否由父发布触发。
  • 如果没有大量挖掘,我不相信您尝试做的事情只能使用 OnPageSetPublishedToPost 触发器。有什么方法可以使用 OnPageResolvePre 事件?也许您可以在代码中解释您实际尝试实现的目标,以便我们提出另一种创造性的解决方案。
  • 我认为要解决这个问题,您将不得不告诉我们更多有关它的信息。您已经确定了使用 OnPageSetPublishedToPost 的技术,但只是给出了有关问题域的隐蔽提示。那么为什么要区别对待这两种情况,“做事”是什么意思。也许通过更广阔的视野,我们可以提供更好的帮助。

标签: events system publishing tridion


【解决方案1】:

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

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

【讨论】:

  • 谢谢巴特。这至少澄清了这个问题。 2009 年没有直接的解决方案。我们正在尝试不同的方法。在发布事件中,我们要将父页面排队,当排队的子页面到达时,我们可以选择忽略该事件。该解决方案明确假设在发布页面时 Tridion(将 asyncevents 设置为 false)首先调用父页面 1 的事件,然后调用其子页面,然后传递到父页面 2。您认为这可行吗?
  • 如果我没记错的话,基于 COM 的事件系统不会触发基于其他事件的事件。所以不确定你所说的是否会起作用。如果您以编程方式将父级添加到发布队列中,则会将其作为不同的发布事务处理,并且会有自己的事件。
  • 事件已经开始了。基本上 OnPageSetPublishedToPre 现在会为页面 A 调用,然后为 A 的每个子页面调用。这实际上是问题所在。我们计划在 OnPageSetPublishedToPre 中对某些调用(针对父页面)进行排队,并跳过在父页面之后立即处理的子页面方法的标准代码。为此,我们需要 Tridion 始终以清晰的方式调用事件:父 A、子 A1、子 A2、父 B ...
  • 应该会发生这种情况,当您从事件排队发布操作时,它们将在事件之后触发,但实际顺序仍取决于处理发布事务的实际顺序。如果您有一个发布者线程,则与您在队列中看到的完全一样,如果您有多个线程,则 OnPageSetPublishedToPre 的顺序可能与首先提交的线程有关。
  • 我仍然认为您在 SDL Tridion 2011 中会有更好的选择,因为这样事件系统将能够告诉您更多信息,您可以在事件 args 中设置一个上下文变量,该变量传递给另一个该项目触发的事件。
猜你喜欢
  • 2012-04-04
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多