7

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 イベントは問題なく動作しますが、ローカライズ イベントでは同じコードが動作しません。コンポーネントの XML に加えられた変更はすべて破棄されます。私はかなり簡単なコードを使用しています:

var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();

ローカリゼーションで変更を永続化する唯一の方法は、Post / Commit フェーズでそれを行い、チェックアウト / 更新 & 保存 / チェックインを行うことです。コンポーネントがローカライズされた後、別のトランザクションでそれを行います。これを行うためのよりエレガントな方法を知っている人はいますか?

4

1 に答える 1

5

ローカライズのアクションは、アイテムの青写真のステータスを変更するだけで、新しい出版物でアイテムのバージョン #1 を提供すると思います。新しいバージョン (つまり、バージョン 2) を作成せずに、その項目に変更を加えることはできないと思います。

これはあなたが見つけたもののようです。ローカリゼーションが行われた後にアイテムを変更して再保存することが唯一のオプション (既に発見されています) だと思います。

于 2012-12-03T17:32:22.293 に答える