自定义Sitecore RichTextEditor以添加默认包装器
前端(html和css)的设置方式是,对于Sitecore内容字段中的描述文本,需要在其周围缠绕一个自定义Sitecore RichTextEditor以添加默认包装器,sitecore,sitecore7,rich-text-editor,Sitecore,Sitecore7,Rich Text Editor,前端(html和css)的设置方式是,对于Sitecore内容字段中的描述文本,需要在其周围缠绕一个标记 因此,默认情况下,RTE将文本包装为标记=TRUE。但问题是,你需要点击回车键或复制/粘贴多个段落 如果只有一行,我们如何强制Sitecore添加p标记?幸运的是,在dll中,有一个特定的函数吸引了我的注意: 受保护的虚拟void SetupScripts() { foreach(Factory.GetConfigNodes(“clientscripts/htmleditor/script”
标记
因此,默认情况下,RTE将文本包装为
标记=TRUE。但问题是,你需要点击回车键或复制/粘贴多个段落
如果只有一行,我们如何强制Sitecore添加p标记?幸运的是,在dll中,有一个特定的函数吸引了我的注意:
受保护的虚拟void SetupScripts()
{
foreach(Factory.GetConfigNodes(“clientscripts/htmleditor/script”)中的XmlNode节点)
this.Result.Scripts.AppendFormat(“\n”,(object)XmlUtil.GetAttribute(“src”,node),(object)XmlUtil.GetAttribute(“language”,node));
}
很好,嗯?SITECORE的开发者毕竟很聪明。
所以我在web.config中做了这个
并从EditorWindow.aspx中重写scSendRequest
函数
window.scSendRequest=函数(evt,命令){
var editor=scRichText.getEditor();
if(editor.get_mode()==2){//if处于HTML编辑模式
editor.set_mode(1);//将mode设置为Design
}
var htmls=editor.get\u html(true);
var regex=/]*>.*i;
var match=regex.exec(htmls);
if(match==null&&htmls!=null){
htmls=“”+htmls+””;
}
//$(“EditorValue”).value=editor.get_html(true);
$(“EditorValue”).value=htmls;
scForm.browser.clearEvent(evt);
postRequest(“,”,“,命令);
返回false;
}
是的。。double rainbow and unicorn.您也可以为这一需求创建自己的定制解决方案。 您可以在中创建新的管道事件
管道-当您在sitecore的富文本编辑器中点击save时,这可以使您附加标记
管道-如果原始rtf文本中没有标记,则可以在呈现页面时动态地将文本包装到
标记中
如果您选择方法1:
您可以在web.config中添加到管道:
您可以使用以下相应的代码:
名称空间Sitecore72.class
{
公共类WraprichtParagraphSave
{
公共作废进程(SaveRichTextContentArgs-args)
{
if(!(args.Content.Trim().StartsWith(“”)&&args.Content.Trim().EndsWith(“”))
args.Content=“”+args.Content+””;
}
}
}
请注意,只有在使用富格文本字段的“显示编辑器”按钮时,才会触发此管道:
如果您选择方法2:
要附加到此管道,请使用以下配置:
您可以使用以下相应的代码:
名称空间Sitecore72.class
{
公共类wraprichtParagraphonRender
{
公共作废流程(RenderFieldDargs args)
{
if(args.FieldTypeKey==“富文本”&&&!(args.Result.FirstPart.Trim().StartsWith(“”&&args.Result.FirstPart.Trim().EndsWith(“”))
args.Result.FirstPart=“”+args.Result.FirstPart+””;
}
}
}
对于这两种情况,请确保添加对Sitecore.Kernel.dll和HtmlAgilityPack.dll的引用。sitecore软件包解决方案提供了这两种功能。在这两种情况下,我会检查的不仅仅是段落标记,还有其他元素,如表格、div、ol和ul。EditorWindow.aspx对我不起作用。我不得不向EditorPage.aspx添加相同的覆盖