using Sitecore.Data.Items; using Sitecore.Mvc.Analytics.Pipelines.Response.CustomizeRendering; using Sitecore.Pipelines; using Sitecore.Pipelines.ResolveRenderingDatasource; public class CustomMVCResolveRenderingDataSource : CustomizeRenderingProcessor { public override void Process(CustomizeRenderingArgs args) { var rendering = args.Rendering; //Get the Site Item var contextSiteItem = GetSiteItem(Context.Item); if (!string.IsNullOrEmpty(rendering.DataSource) && contextSiteItem != null) { if (rendering.DataSource.Contains("$SiteName")) { rendering.DataSource = rendering.DataSource.Replace("$SiteName", contextSiteItem.Name); Item sourceItem = Context.Database.GetItem(rendering.DataSource); if (sourceItem != null) { rendering.DataSource = sourceItem.ID.ToString(); } } } //Initialize the resolved DataSource to ResolveRenderingDatasourceArgs var renderingDSArgs = new ResolveRenderingDatasourceArgs(rendering.DataSource); CorePipeline.Run("resolveRenderingDatasource", renderingDSArgs); rendering.DataSource = renderingDSArgs.Datasource; } }