1

UMBRACO 6.0.2 を使用していますが、別の場所で使用されているノードを非公開にすると、UMBRACO が参照ノードを削除せず、コードがクラッシュするという問題が発生しています。

null ノードを処理するためのロジックを実装したくはありませんが、実際の CMS がそれをより適切に処理することを望みます。

それが可能かどうか知っている人はいますか?

4

1 に答える 1

1

私の知る限り、Umbraco はノード間の参照を別のテーブルに保存しないため、どのノードが別のノードを参照しているかを確認する標準オプションがありません。

ただし、データベース テーブルでクエリを使用してこれを実現する方法があります。Umbraco はcmsPropertyDataテーブルの documenttype フィールドの値をフィールドにdataNtext保持し、nodeID はcontentNodeIdフィールドに保持されます。

Document.AfterUnPublish()またはDocument.BeforeUnPublish()イベントにフックし、cmsPropertyDataテーブルでクエリを実行しdataNtextて、非公開にした nodeId を含むフィールドがあるかどうかを確認できます。その場合は、フィールドの nodeID を使用してドキュメントを非公開にする必要もありcontentNodeIdます。

この解決策はきれいなものではありませんが、うまくいく可能性があります。注意が必要な部分は、ノードがまだイベントで処理/非公開されていないかどうかを判断することです。そうしないと、無限ループが作成される可能性があります;)

于 2013-04-12T15:04:14.867 に答える