Tridion 用于在本地化时更新组件的自定义事件代码
我正在SDL Tridion 2011 SP 1-1中编写一些自定义事件代码,在初始化阶段修改组件的保存或本地化字段:Tridion 用于在本地化时更新组件的自定义事件代码,tridion,tridion-2011,Tridion,Tridion 2011,我正在SDL Tridion 2011 SP 1-1中编写一些自定义事件代码,在初始化阶段修改组件的保存或本地化字段: var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated); var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnCompo
var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated);
var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSave, EventPhases.Initiated);
_subscriptions.Add(localize);
_subscriptions.Add(save);
我能够在本地化过程中保持更改的唯一方法是在发布/提交阶段执行更改,并执行签出/更新&保存/签入。这并不好,因为执行它需要几秒钟&在组件本地化后在单独的事务中执行。有人知道更简单的方法吗?我认为本地化操作只会更改项目的蓝图状态,并在新出版物中为您提供项目的版本1。我不认为您可以在不创建新版本(即版本2)的情况下对该项目进行任何修改
这似乎就是你发现的。我想您唯一的选择(您已经发现)是在本地化发生后修改并重新保存该项。本地化事件发生时是否触发代码?是的,我记录了大量输出,包括看起来正确的组件XML。
var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();