新しいレンダリングがページに追加されたときにページエディタから開く[データソースの選択]ダイアログの前に、Sitecoreに新しいアイテムを作成させようとしています。
各サイトがこのように表現されるマルチサイトソリューションを構築しています(概念)
site1 (template = website)
Datasources (template = datasourcefolder)
Module X Sources (template = module1container)
Module Source 1 (template = module1)
Module Y Sources (template = module2container)
...
Home (template = startpage)
サイトは、テンプレートのWebサイト、datasourcefolder、およびstartpageに基づいてアイテムを作成するブランチテンプレートを使用して作成されます。
これが私がしたいことです:
新しいサブレイアウトが追加されたら、ソースが存在するかどうかを確認します。存在しない場合は、指定されたテンプレート(親データソーステンプレートとして定義され、サブレイアウトテンプレートに追加)に基づいてsite1 / Datasources/[モジュール名]に新しいアイテムを作成します。次に、この新しいアイテムをダイアログDatasourceRootsに追加して、ユーザーがその下にデータソースアイテムを作成できるようにします。
パイプラインを正常に実装して、アイテムが存在しない場合はアイテムをチェックして作成しました。[レンダリングデータソースの選択]ダイアログに新しく作成されたアイテムが表示され、ユーザーは期待どおりにその下に新しいデータソースアイテムを作成できます。ただし、[OK]をクリックすると、「エラーが発生しました」というメッセージとともにアラートが表示されます。このダイアログを閉じて操作を再実行すると(データソースルートがすでに存在する場合)、問題なく機能します。
Reflectorを使用して、ダイアログ(Sitecore.Shell.Applications.Dialogs.SelectRenderingDatasourceForm)から作成されたアイテムが正しく返され、ダイアログが正しい引数で閉じられ、実行されたアイテムでSetDialogValueが呼び出されることを確認しました。
私の質問は; このダイアログを閉じた後はどうなりますか?レンダリングにデータソースを実際に設定するためにトリガーされるパイプラインは何ですか?このエラーが発生する場所を特定し、もちろん、問題を修正する必要があります...
これを理解するのは少し難しいかもしれませんが、必要に応じて喜んでコードを提供します。