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

Unexpected character "&" while editing the text using the editor

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

我查看了 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; %} 

不仅是“&”,我还得到了其他字符,例如“#”。我希望空格不会被这样的字符替换。

看来您在 CMS 页面上使用的是 WYSIWYG 插件?

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

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

尝试使用 Static Pages instead

如果您正在使用这个插件,您可以将其关闭。安装和使用 Static Pages instead

将以下内容添加到您的 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;
};