自定义Sitecore RichTextEditor以添加默认包装器

Ali*_*hid 2 sitecore rich-text-editor sitecore7

前端(html和css)的设置方式使得Sitecore内容字段中的描述文本需要包含一个<p>标记.

因此,默认情况下,RTE将文本包装在<p>tag = TRUE中.但是你需要点击 Enter或复制/粘贴多个段落.

如果它只是一行,我们如何强制Sitecore添加P标签?

Ali*_*hid 7

幸运的是,从dll开始,我发现了一个特殊功能:

protected virtual void SetupScripts()
{
    foreach (XmlNode node in Factory.GetConfigNodes("clientscripts/htmleditor/script"))
    this.Result.Scripts.AppendFormat("<script src=\"{0}\" language=\"{1}\"></script>\n", (object) XmlUtil.GetAttribute("src", node), (object) XmlUtil.GetAttribute("language", node));
}
Run Code Online (Sandbox Code Playgroud)

好的,嗯?毕竟,SITECORE的开发人员很聪明.所以我在web.config中做了这个,

<!— CLIENT SCRIPTS
These script files are included in the client, e.g. '<script src="/myscript.js" language="JavaScript"/>'
—>
<clientscripts>
    <everypage />
    <htmleditor>
        <script src=”/assets/js/CustomRTE.js” language=”javascript”/>
    </htmleditor>
</clientscripts>
Run Code Online (Sandbox Code Playgroud)

以及scSendRequestEditorWindow.aspx的overrode功能.

window.scSendRequest = function(evt, command) {
    var editor = scRichText.getEditor();
    if (editor.get_mode() == 2) { //If in HTML edit mode
        editor.set_mode(1); //Set mode to Design
    }
    var htmls = editor.get_html(true);
    var regex = /<p[^>]*>.*?<\/p>/i;
    var match = regex.exec(htmls);
    if(match == null && htmls != null) {
        htmls = "<p>" + htmls + "</p>";
    }

    //$("EditorValue").value = editor.get_html(true);
    $("EditorValue").value = htmls;

    scForm.browser.clearEvent(evt);

    scForm.postRequest("", "", "", command);

    return false;
}
Run Code Online (Sandbox Code Playgroud)

和YAY ..双彩虹和独角兽.