2013-04-12 59 views
3

每次特定内容部分被更新,创建或删除时,我都会尝试发送一条消息。Orchard CMS内容部分更新

何时被创建或删除我使用内容处理程序:OnCreated和OnRemoving发送消息。

但是在更新期间,我需要ContentPart的前一个状态和新的Data。

谢谢。

【答案】

答案和Piotr Szmyd评论使我对解决这个问题。阅读它们。

回答

2

使用OnVersioning/OnVersioned。只要创建新版本的项目,这些事件就会被触发。然后,您可以访问给定部件的旧版本和新版本。

+0

感谢您的帮助。但是在“版本控制”中,“现有”和“构建部件”保留了相同的信息。所以我做的是:在ContentHandler中使用一个私有字符串,在OnUpdating中我保存当前信息,并在OnUpdated中发送存储在该字符串中的新信息和旧信息。由于处理程序是根据请求实例化的,因此该字符串仅在OnUpdating/OnUpdated循环期间使用。 – mberacochea

+1

问题是为什么你看到现有/构建部分是相同的,因为这些部分不是可版本化的(即基础记录来自'ContentPartRecord',而不是'ContentPartVersionRecord'。可版本化部件的例子是例如'BodyPart', ''CommonPart'。看看这些部分的实现,看看它应该怎么做 –

+0

但是当然,你可能有自己的机制来跟踪变化,当然(保存'OnLoaded'中的初始状态和请注意,内容处理程序没有按每个项目实例化(如您所说,只针对每个请求),因此您可能需要使用例如字典(将项目ID作为关键字)而不是一个简单的私有字符串,否则你将无法知道当OnUpdated触发时当前存储的字符串值是什么项目 –