Introduction
This is demo project with Car example.
Technical Use Cases
TextImageRender Repository
TextImage Model
Create Pipeline to Process DynamicPlaceholderRendering
Page Editor- Select Allow Controls
TextImage Renderings
This is demo project with Car example.
Technical Use Cases
- Dynamic Placeholder with configured pipeline.
- View Rendering and Controller Rendering
- Static Placeholder
- Repository to create Sitecore.Mvc.Presentation.RenderingContext Context.
Sitecore MVC
- View- Layouts
- View- Container
- View-TextImage
- View-Header
- View-Footer
- Controller- FooterController
- Controller- TextImageController
- Controller- HeaderController
- Repository for above Controller
Three column Dynamic Placeholder
Extend Sitecore MVC using SitecoreHelper Sitecorehelper to extend the @Html.Sitecore.Placeholder("")@Html.Sitecore().DynamicPlaceholder("sub-content-three-column-content-left")@Html.Sitecore().DynamicPlaceholder("sub-content-three-column-content-middle")@Html.Sitecore().DynamicPlaceholder("sub-content-three-column-content-right")
namespace Demo.Sitecore.CarInfo.WebSite.Utility
{
public static class SitecoreExtensions
{
public static HtmlString DynamicPlaceholder(this SitecoreHelper helper, string key)
{
Guid currentRenderingId = RenderingContext.Current.Rendering.UniqueId;
return helper.Placeholder(string.Format("{0}#{1}", key, currentRenderingId.ToString()));
}
}
}
Ultimately this dynamic placeholder fetch the textimage for respective layouts from TextImage Controller Rendering.
using Demo.Sitecore.CarInfo.WebSite.Models;
using Sitecore.Mvc.Presentation;
using Sitecore.Web.UI.WebControls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Demo.Sitecore.CarInfo.WebSite.Repository
{
public class TextImageRepository
{
public TextImage GetTextImage()
{
var item = RenderingContext.Current.Rendering.Item;
var textImage = new TextImage()
{
Title = new HtmlString(FieldRenderer.Render(item, "Title")),
Image = new HtmlString(FieldRenderer.Render(item, "Image"))
};
return textImage;
}
}
}
TextImage Model
namespace Demo.Sitecore.CarInfo.WebSite.Models
{
public class TextImage
{
public HtmlString Title { get; set; }
public HtmlString Description { get; set; }
public HtmlString Image { get; set; }
}
}
TextImage Controller
namespace Demo.Sitecore.CarInfo.WebSite.Controllers
{
public class TextImageController : SitecoreController
{
public ActionResult TextImageDetail()
{
TextImageRepository repo = new TextImageRepository();
return View(repo.GetTextImage());
}
}
}
Create Pipeline to Process DynamicPlaceholderRendering
namespace Demo.Sitecore.CarInfo.WebSite.Utility
{
public class GetDynamicPlaceholderRenderings : GetAllowedRenderings
{
public new void Process(GetPlaceholderRenderingsArgs args)
{
Item placeholderItem;
var placeholderKey = string.Join("/", args.PlaceholderKey.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Split('#')[0]));
using (new DeviceSwitcher(args.DeviceId, args.ContentDatabase))
placeholderItem = Client.Page.GetPlaceholderItem(placeholderKey, args.ContentDatabase, args.LayoutDefinition);
List- list = null;
if (placeholderItem != null)
{
args.HasPlaceholderSettings = true;
bool allowedControlsSpecified;
list = GetRenderings(placeholderItem, out allowedControlsSpecified);
if (allowedControlsSpecified)
args.Options.ShowTree = false;
}
if (list == null)
return;
if (args.PlaceholderRenderings == null)
args.PlaceholderRenderings = new List
- ();
args.PlaceholderRenderings.AddRange(list);
}
}
}
Page Editor- Select Allow Controls
TextImage Renderings
No comments :
Post a Comment