【发布时间】:2025-12-05 04:40:01
【问题描述】:
我正在 SDL Tridion 2011 SP 1-1 中编写一些自定义事件代码,在初始化阶段修改组件的保存或本地化字段:
var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated);
var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSave, EventPhases.Initiated);
_subscriptions.Add(localize);
_subscriptions.Add(save);
save 事件工作正常,但相同的代码在 localize 事件上不起作用 - 对组件的 XML 所做的任何更改都将被丢弃。我正在使用非常简单的代码:
var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();
如果我在发布/提交阶段执行此操作并执行签出/更新和保存/签入,我可以让更改持续本地化的唯一方法。这不是很好,因为它需要几秒钟在组件本地化后在单独的事务中执行 & 执行它。有谁知道更优雅的方法来做到这一点?
【问题讨论】:
-
发生本地化事件时您的代码是否触发?
-
是的,我记录了很多输出,包括看起来正确的组件 XML。
标签: tridion tridion-2011