internal static void InitializePageContext(Page containerPage, ViewContext viewContext) { PageContext pageContext = global::Sitecore.Context.Page; if (pageContext == null) { return; } var exists = pageContext.Renderings != null && pageContext.Renderings.Count > 0; if (!exists) { //use the default initializer: pageContextInitializer.Invoke(pageContext, null); //viewContext.HttpContext.Items["_SITECORE_PLACEHOLDER_AVAILABLE"] = true; } else { //our own initializer (almost same as Initialize in PageContext, but we need to skip buildcontroltree, since that is already availabe) pageContext_page.SetValue(pageContext, containerPage); containerPage.PreRender += (sender, args) => pageContextOnPreRender.Invoke(pageContext, new[] { sender, args }); switch (Settings.LayoutPageEvent) { case "preInit": containerPage.PreInit += (o, args) => pageContext.Build(); break; case "init": containerPage.Init += (o, args) => pageContext.Build(); break; case "load": containerPage.Load += (o, args) => pageContext.Build(); break; } } }