簡體   English   中英

如何在sitecore中創建自定義令牌

[英]how to create a custom token in sitecore

我正在嘗試創建一個自定義標記,如果用戶在富文本編輯器字段中輸入某些文本,該文本將顯示一個值。 所以說用戶在富文本編輯器字段中輸入@@ tester,“今天月是@@ tester”。 我有c#試圖在sitecore的任何富文本編輯器字段中找到@@ tester,如果它找到該標記,則在標題字段中找到與要替換文本的位置匹配的標記。 所以ie:

Item Name = token
Item ID = {06912058-6U9A-4BBF-BAE3-9306974EBE68}
Title = @@tester
Content (rich text editor) = February

我到目前為止:

namespace LonzaWeb.Pipeline.RenderField
{
public class AddToken
{
    public void Process(RenderFieldArgs args)
    {
        Item currentItem = Sitecore.Context.Item;

        if ((args.FieldTypeKey == "rich text") && currentItem.TemplateID.ToString() == "{06912058-6U9A-4BBF-BAE3-9306974EBE68}")
        {

            var tItem = currentItem.Fields["Title"].ToString();

            if (tItem != null) {
                Regex regex = new Regex(tItem);
                Match match = regex.Match(tItem);
            }
        }
    }
}
}

此外,我正在嘗試使用RegEx模式匹配。 我已將此添加到webconfig文件中以確保它查找它。

擴展<renderField>管道可能是一種更好的方法。

可以使用自己的Process方法提供新類型。 可以使用RenderFieldArgs.FieldTypeKey檢查正在處理的字段的類型。 可以使用每個支持的標記的值更新FieldValue屬性。

管道中的每個處理器都會將生成的args傳遞給下一個處理器。 我會在GetTextFieldValue之后添加這個補丁。

http://www.sitecore.net/learn/blogs/technical-blogs/sitecorebetter/posts/2013/06/extending-the-sitecore-renderfield-pipeline.aspx

http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2011/08/replace-tokens-in-rich-text-fields-using-the-sitecore- ASPNET,cms.aspx

由於您要在Live網站上呈現富文本值,因此可以在“頁面加載”上進行替換。 以下方法可以是集中式方法,因此任何需要Rich Text Replacement的其他子布局都可以使用它

public static string RichTextReplacer(Item currentItem, string fieldName)
{
   var richTextValue = currentItem.Fields[fieldName].Value;

   var getToken = Sitecore.Context.Database.Items.GetItem("path to your token item");

   var sb = new StringBuilder(richTextValue);

   sb.Replace(getToken.Fields["Title"].value, getToken.Fields.["Content"].value);

   return sb.ToString();
}

您可以將該方法用作集中,只需傳遞所需的不同參數即可。 您可以添加/刪除適合您需求的參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM