Tôi đang viết một số mã sự kiện tùy chỉnh trong SDL Tridion 2011 SP 1-1 mà sẽ thay đổi lĩnh vực của một phần trên lưu hoặc bản địa hoá, trong giai đoạn khởi tạo:Tuỳ chỉnh sự kiện mã để cập nhật một phần trên Localize
var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated);
var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSave, EventPhases.Initiated);
_subscriptions.Add(localize);
_subscriptions.Add(save);
Sự kiện lưu hoạt động tốt nhưng cùng một mã không hoạt động trên sự kiện bản địa hóa - bất kỳ thay đổi nào được thực hiện cho XML của Thành phần đều bị loại bỏ. Tôi đang sử dụng mã khá đơn giản:
var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();
Cách duy nhất tôi có thể nhận được những thay đổi để tồn tại trên địa hóa là nếu tôi làm điều đó trong một bài viết/Commit pha và làm một tấm séc ra/cập nhật & lưu/kiểm tra trong Đây không phải là tuyệt vời vì phải mất vài giây để thực hiện & thực hiện nó trong một giao dịch riêng biệt sau khi Thành phần đã được bản địa hóa. Có ai biết một cách sang trọng hơn để làm điều này?
Mã của bạn có kích hoạt khi sự kiện bản địa hóa xảy ra không? –
Có, Im ghi lại rất nhiều đầu ra, bao gồm XML thành phần có vẻ chính xác. – richeym