Friday, March 11, 2016

HTML templates redirects through rendering parameters on a 'winner' rendering on a Sitecore MV test

in js:

getTemplateUrl: function (url) {
                     var templateRedirects = HA.templateRedirects || {};
                     var redirect = templateRedirects[url.toLowerCase()];
                     if (redirect) {
                         url = redirect;
                     }
                           return url ? [HA.cdn.html, templateRoot, url.replace(/^\/|\/$/g, '')].join('') : '';

                    },



on the cshtml view:


@{
    Dictionary<string, string> renderingParameters = new Dictionary<string, string>();

    if (RenderingContext.CurrentOrNull != null)
    {
        var renderings = RenderingContext.Current.PageContext.PageDefinition.Renderings;
        foreach (var rendering in renderings)
        {
            var parameters = rendering.RenderingItem.Parameters;
            if (!string.IsNullOrEmpty(parameters))
            {
                var collection = Sitecore.StringUtil.ParseNameValueCollection(parameters, '&', '=');
                foreach (string key in collection.AllKeys)
                {
                    string value = collection[key];
                    if (!string.IsNullOrEmpty(value) && !renderingParameters.ContainsKey(key))
                    {
                        renderingParameters.Add(key.ToLower(), value.ToLower());
                    }
                }
            }
        }
    }
}

<script type="text/javascript">
    HA = {};
    HA.templateRedirects = @Html.Raw(Json.Encode(renderingParameters));
    console.log(HA.templateRedirects);
</script>

in Sitecore:





No comments:

Post a Comment