使用编辑器编辑文本时出现意外字符“&”

时间:2019-11-11 14:45:43

标签: laravel ckeditor wysiwyg octobercms

我正在使用“所见即所得”和Octobercms的CKeditor通过管理面板编辑文本。但是,当我编辑文本时,HTML标记之间的所有空格都被替换为“&”,并且出现以下错误

error

我查看了ckeditor.js文件,找到了被调用以解析HTML的任何函数,但是我无法解决它。

原始代码:

 <div class="container d-flex align-items-center px-4">
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#ftco-nav" aria-controls="ftco-nav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="oi oi-menu"></span> Menu
            </button>
            <form action="#" class="searchform order-lg-last">
                <div class="form-group d-flex">
                    <input type="text" class="form-control pl-3" placeholder="Search">
                    <button type="submit" placeholder="" class="form-control search"><span class="ion-ios-search"></span></button>
                </div>
            </form>
            <div class="collapse navbar-collapse" id="ftco-nav">
                {% component 'menu' %}

由Ckeditor替换的代码:

<div class="container d-flex align-items-center px-4">Menu
<form action="#">
<div class="form-group d-flex"><input type="text" /></div>
</form>

<div class="collapse navbar-collapse" id="ftco-nav">{% component &#39;menu&#39; %} 

不仅是“&”,而且还有其他字符,例如“#”。我希望空格不会被此类字符替换。

2 个答案:

答案 0 :(得分:0)

看起来您在CMS页面上使用的是所见即所得插件?

此问题是由ckeditor想要将撇号解析为&#39;引起的。它不起作用,因为{% component 'menu' %} is a twig function and because the ckeditor is changing it to'`不起作用。

我忘记了可能有办法关闭设置中的严格解析。取决于您使用的插件。

尝试使用Static Pages instead

如果您正在使用此插件,则可以将其关闭。安装并使用Static Pages instead

enter image description here

答案 1 :(得分:0)

将以下内容添加到您的config.js文件中:

CKEDITOR.editorConfig = function( config ) {
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
CKEDITOR.config.forcePasteAsPlainText = false;
CKEDITOR.config.basicEntities = true;
CKEDITOR.config.entities = false;
CKEDITOR.config.entities_latin = false;
CKEDITOR.config.entities_greek = false;
CKEDITOR.config.entities_processNumerical = false;
CKEDITOR.config.fillEmptyBlocks = function (element) {
    return true;
};
CKEDITOR.config.autoParagraph = false;
CKEDITOR.config.allowedContent = true;
CKEDITOR.dtd.$removeEmpty.span = 0;
CKEDITOR.dtd.a.div = 1;
CKEDITOR.dtd.a.p = 1;
};