我正在尝试创建一个自定义标记,如果用户在富文本编辑器字段中输入某些文本,该文本将显示一个值.所以说用户在富文本编辑器字段中输入@@ tester,"今天月是@@ tester".我有c#试图在sitecore的任何富文本编辑器字段中找到@@ tester,如果它找到该标记,则在标题字段中找到与要替换文本的位置匹配的标记.所以ie:
Item Name = token
Item ID = {06912058-6U9A-4BBF-BAE3-9306974EBE68}
Title = @@tester
Content (rich text editor) = February
Run Code Online (Sandbox Code Playgroud)
我到目前为止:
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);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我正在尝试使用RegEx模式匹配.我已将此添加到webconfig文件中以确保它查找它.
小智 6
扩展<renderField>管道可能是更好的方法.
可以使用自己的Process方法提供新类型.可以使用RenderFieldArgs.FieldTypeKey检查正在处理的字段的类型.可以使用每个支持的标记的值更新FieldValue属性.
管道中的每个处理器都会将生成的args传递给下一个处理器.我会在GetTextFieldValue之后添加这个补丁.