/// <summary> /// Processes the specified args. /// </summary> /// <param name="args">The arguments.</param> public override void Process(InsertRenderingsArgs args) { Assert.ArgumentNotNull(args, "args"); var resolver = Context.Entity.Resolve<VirtualProductResolver>(); var presentationItem = resolver.ProductPresentationItem; args.ContextItem = presentationItem ?? Sitecore.Context.Item; }
/// <summary> /// Processes the specified args. /// </summary> /// <param name="args">The arguments.</param> public override void Process(InsertRenderingsArgs args) { Assert.ArgumentNotNull(args, "args"); var resolver = Context.Entity.Resolve <VirtualProductResolver>(); var presentationItem = resolver.ProductPresentationItem; args.ContextItem = presentationItem ?? Sitecore.Context.Item; }
/// <summary> /// /// </summary> /// <param name="args"></param> public override void Process(InsertRenderingsArgs args) { if (!args.HasRenderings) return; foreach (var rendering in args.Renderings) { SetRenderingDataSource(rendering); } }
/// <summary> /// /// </summary> /// <param name="args"></param> public override void Process(InsertRenderingsArgs args) { if (!args.HasRenderings) { return; } foreach (var rendering in args.Renderings) { SetRenderingDataSource(rendering); } }
public override void Process(InsertRenderingsArgs args) { //Get the merged item layout field value Field layoutField = args.ContextItem.Fields[FieldIDs.LayoutField]; if (layoutField == null) { return; } string fieldValue = LayoutField.GetFieldValue(layoutField); if (string.IsNullOrEmpty(fieldValue)) { return; } //Parse it for easier processing XDocument layout = XDocument.Parse(fieldValue); XmlBasedRenderingParser parser = new XmlBasedRenderingParser(); //Build a shared page context Sitecore.Mvc.Presentation.PageContext pageCtx = new Sitecore.Mvc.Presentation.PageContext(); HttpContextWrapper httpCtxWrapper = new HttpContextWrapper(HttpContext.Current); RouteData routeData = CreateRouteData(); pageCtx.RequestContext = CreateRequestContext(httpCtxWrapper, routeData); string deviceId = Sitecore.Context.Device.ID.ToString(); //Loop through the renderings foreach (RenderingReference renderingReference in args.Renderings) { string templateName = renderingReference.RenderingItem.InnerItem.TemplateName; //Only do the replacement for MVC renderings if (templateName == "View rendering" || templateName == "Controller rendering" || templateName == "Item rendering") { XElement renderingXml = layout.XPathSelectElement("/r/d[@id='" + deviceId + "']/r[@id='" + renderingReference.RenderingID + "']"); Rendering rendering = parser.Parse(renderingXml, false); renderingReference.SetControl(new RenderingWrapper(rendering, pageCtx)); } } }
public override void Process(InsertRenderingsArgs args) { Assert.ArgumentNotNull((object)args, "args"); if (!args.HasRenderings || args.ContextItem == null) { return; } for (var i = args.Renderings.Count - 1; i >= 0; i--) { var name = args.Renderings[i]?.RenderingItem?.DisplayName; var placeholder = args.Renderings[i]?.Placeholder; args.Renderings.Insert(i + 1, new RenderingReference(new CommentControl($"End rendering: {name ?? "unknown"}")) { Placeholder = placeholder }); args.Renderings.Insert(i, new RenderingReference(new CommentControl($"Begin rendering: {name ?? "unknown"}")) { Placeholder = placeholder }); } }