Подтвердить что ты не робот

CKEditor strips <i> Тег

Я пытаюсь найти решение, чтобы избежать CKEditor, но и старый FCKeditor удаляет любые тег <i> из ранее вставленного содержимого в db.

Случай:

Я вставляю содержимое html в db, в некотором содержимом содержатся элементы <i>. Я делаю это с CKEditor. Все работает отлично, и контент отображается на веб-странице. Но когда я хочу отредактировать ранее вставленный контент, элементы <i> отсутствуют.

В моем конкретном случае я использую:

<i class="fa-icon-fullscreen fa-icon-xxlarge main-color"></i>

Конечно, если я отключу редактор, содержимое отобразится просто в текстовом поле.

4b9b3361

Ответ 1

Я нашел решение этой конкретной проблемы, с которой я столкнулся с тегом <i>

Оригинальный ответ, который я получил от форума drupal

Исправить или настроить (вы называете это), чтобы установить следующее в ckeditors config.js:

// ALLOW <i></i>
config.protectedSource.push(/<i[^>]*><\/i>/g);

Благодаря Spasticdonkey для ссылки на ссылку.

Ответ 2

Когда используется решение protectedSource, теги i больше не разделяются, но теги img перестают отображаться в режиме WYSIWIG CKEditor (я использую 4.3.1). Решение, которое лучше для меня работало, - отключить удаление тегов i с помощью CKEDITOR.dtd.$removeEmpty

Например, я добавил следующее в config.js

// allow i tags to be empty (for font awesome)
CKEDITOR.dtd.$removeEmpty['i'] = false;

Примечание. Это должно быть помещено вне функции CKEDITOR.editorConfig = function( config ).

Ответ 3

Вот что работает для меня

добавьте 3 строки кода ниже в том же порядке в настройке профиля drpal ckeditor админ/конфигурации/содержание/CKEditor/редактировать/Full

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ → Пользовательская настройка JavaScript

    config.allowedContent = true;
    config.extraAllowedContent = 'p(*)[*]{*};div(*)[*]{*};li(*)[*]{*};ul(*)[*]{*}';
    CKEDITOR.dtd.$removeEmpty.i = 0;

Ответ 4

Возможны две проблемы:

  • Прочитайте Расширенный фильтр содержимого. CKEditor удаляет элементы, которые не разрешены, но вы можете расширить правила фильтрации.

  • Однако, если проблема в том, что CKEditor удаляет пустые элементы <i>, вам нужно найти другой способ его использования. CKEditor не является создателем веб-сайта WYSIWYG. Это редактор документов, поэтому загруженный контент должен иметь значение. Пустой встроенный элемент не имеет никакого значения, поэтому он удален, потому что иначе редактор не знал, что с ним делать.

    Одним из возможных решений будущего (ближайшего) будет использование Widgets system для обработки этих пустых элементов. Но сейчас я советую вам проверить CKEDITOR.htmlDataProcessor и короткое руководство как его использовать.

Ответ 5

для версии 4.3 cceditor

в config.js(после раздела конфигурации) вставить

CKEDITOR.dtd.$removeEmpty['b'] = false;

и напишите виджет с кодом

CKEDITOR.plugins.add( 'bwcaret', {
requires: ['widget'/*, 'richcombo'*/],

icons: 'bwcaret',

init: function( editor ) {

    editor.widgets.add( 'bwcaret', {

        button: 'Create a caret',

        template: '<b class="caret"></b>',


        allowedContent: 'b(!caret)',

        requiredContent: 'b(!caret)',

        upcast: function( element ) {
            return element.name == 'b' && element.hasClass( 'caret' );
        },

    });
}

});