4

イベント システムを使用して、ページ名に「one」が含まれている場合など、特定の条件が存在する場合にページの公開を停止する必要があります。また、他のページは引き続き公開する必要があります。

一般的な例外の代わりに PublisherException を使用することを考えています。

問題は、LocalizableMessage の resourceName がわからないことです。何か案は?

if (item.Title.ToString().Contains("one"))
{
     Localization.LocalizableMessage errResource = new Localization.LocalizableMessage("error");
     throw new PublisherException(errResource, new Exception("Can't get there from here!"));
} 
4

2 に答える 2

7

イベント システムはパブリッシングを停止できますが、そこには妥協点はありませんが、例外をスローすると、トランザクション全体が停止します。

Puntero が言及しているように、パブリッシュ トランザクションからアイテムを削除する場合は、カスタム リゾルバーの出番です。ここから、パブリッシュ トランザクションに通信することはできませんが、Tridion Logger (イベントログ) にアクセスできます。

Tridion.Logging.Logger.Write("your message string", "MyResolver", LoggingCategory.General, TraceEventType.Information);

イベント システムの LocalizableMessage に関しては、次のことができるはずです。

throw new PublisherException(new LocalizableMessage(Properties.Resources.ResourceManager, "PagePublishErrorMessage"));

resourceName は、プロジェクトにある文字列リソースの名前を指しています。

于 2012-11-28T12:21:10.663 に答える
3

パブリッシュアクションで他のページを通過させたい場合は、イベントハンドラーではなくリゾルバーを使用する必要があるという@Punteroに同意します。

1 つの項目が解決されていないことをユーザーに警告する警告を発しようとしましたが、失敗しました。しかし、ここにいくつかの良いヒント/アイデアがあるかもしれません: SDL Tridion 2011 発行中に「警告」ステータスを上げる

結局、何かを機能させる唯一の方法は、「Allow X failures」を設定し、テンプレートでチェックを行い、そこでエラーを発生させることでした。これはレンダリングの失敗としてカウントされ、パブリッシャーはパブリッシュ トランザクションの次の項目に進むことができます。

メッセージは?どのようなメッセージを表示しますか?

于 2012-11-28T12:06:36.083 に答える