![](/img/trans.png)
[英]How to you create a custom index in Sitecore 7 to index non Sitecore items (f. ex. Users)
[英]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之后添加這個補丁。
由於您要在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.