エクスペリエンス エディターで、最初のプレースホルダー以外のプレースホルダーにレンダリングを追加すると、未処理の例外で失敗する可能性があります。この場合、問題が起きるプレースホルダーにはphkey属性だけがあり、key属性が存在しないという特徴があります。この問題が発生する可能性のあるシナリオとして、次の2つが挙げられます。
この問題は、Sitecore JavaScript Rendering SDK (JSS) 19.0.0および20.0.0をベースとしたReactソリューションで発生します。
また、ログ ファイルに以下のエラー メッセージが出力される可能性があります。
Exception: System.InvalidOperationException Message: placeholderKey Source: Sitecore.ExperienceEditor at Sitecore.Pipelines.ExecutePageEditorAction.InsertRendering.Process(PipelineArgs args) at (Object , Object ) at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists) at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) at Sitecore.Pipelines.ExecutePageEditorAction.ExecutePageEditorActionPipeline.Run(ExecutePageEditorActionArgs args) at Sitecore.Shell.Applications.WebEdit.Palette.OnPreInit(EventArgs e) at System.Web.UI.Page.PerformPreInit() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
加えて、エクスペリエンス エディターでプレースホルダーにレンダリングを追加する際に、「エラーが発生しました(An error occurred)」ポップアップ メッセージがUIに表示される可能性があります。
この問題を解決するには、以下のいずれかのオプションの実施を検討してください。
placeholderKey: function () { return this.chrome.openingMarker().attr("key"); },
変更後:
placeholderKey: function () { return this.chrome.openingMarker().attr("key") || this.chrome.openingMarker().attr("phkey"); },