Wednesday, January 13, 2021

Custom tokens in rich text fields

 Custom tokens in rich text fields:


using Globus.Foundation.SitecoreExtensions.Extensions;

using Sitecore;

using Sitecore.Diagnostics;

using Sitecore.Pipelines.RenderField;

using System;

using System.Collections.Generic;


namespace Globus.Foundation.Extensions.Pipelines.Tokens

{

    public class TrademarkToken

    {        

        public virtual void Process(RenderFieldArgs args)

        {

            try

            {

                Dictionary<string, string> trademarkPairs = new Dictionary<string, string>();


                // Get Site settings Item

                var siteSettingsItem = SiteExtensions.GetSiteSettingsItem(Context.Site.GetStartItem());


                // Read trademark values

                string[] tradeMarkValues = siteSettingsItem[Templates.SiteSettings.Fields.TrademarkSymbol].Split('|');


                foreach(string trademarkString in tradeMarkValues)

                {

                    string[] pair = trademarkString.Split('-');


                    // Replace whatever tokens exist in the rich text with value from site settings

                    args.Result.FirstPart = args.Result.FirstPart.Replace(pair[0], pair[1]);

                }                

            }

            catch(Exception ex)

            {

                Log.Error("Error in TrademarkToken.Process method: " + ex.Message, this);

            }

        }

    }

}



==============


<?xml version="1.0" encoding="utf-8" ?>

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">

    <sitecore>

        <pipelines>

            <renderField>

                <processor patch:after="*[@type='Sitecore.Pipelines.RenderField.GetFieldValue, Sitecore.Kernel']" 

                           type="Globus.Foundation.Extensions.Pipelines.Tokens.TrademarkToken, Globus.Foundation.Extensions"/>

            </renderField>

        </pipelines>

    </sitecore>

</configuration>

No comments:

Post a Comment