Удаление нежелательных символов новой строки при добавлении <p>в CKEditor - PullRequest
14 голосов
/ 30 марта 2010

При загрузке содержимого с набором абзацев в CKEditor он заменяет мои теги <p> на <p>&#x9;

Это означает, что редактор преобразует это:

<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>

в то, что заканчивается так:

<p>
   paragraph 1</p>
<p>
   paragraph 2</p>
<p>
   paragraph 3</p>

Как это исправить, чтобы CKEditor не добавлял лишние символы новой строки, когда видит теги абзаца?

Ответы [ 5 ]

25 голосов
/ 13 августа 2011

В другом месте (мои извинения за то, что я не запомнил, откуда я его взял), я нашел код, чтобы решить эту проблему для всех тегов уровня блока. Для моего проекта дополнительные строки были проблемой из-за вывода в XML и импорта в другие приложения как CDATA.

Итак, в моем файле ckeditor_config.js после функции CKEDITOR.editorConfig я вставил следующее:

CKEDITOR.on('instanceReady', function( ev ) {
  var blockTags = ['div','h1','h2','h3','h4','h5','h6','p','pre','li','blockquote','ul','ol',
  'table','thead','tbody','tfoot','td','th',];

  for (var i = 0; i < blockTags.length; i++)
  {
     ev.editor.dataProcessor.writer.setRules( blockTags[i], {
        indent : false,
        breakBeforeOpen : true,
        breakAfterOpen : false,
        breakBeforeClose : false,
        breakAfterClose : true
     });
  }
});

Некоторые из этих элементов могут не нуждаться в этом лечении; очевидно, массив blockTags можно легко редактировать в соответствии с вашими потребностями.

12 голосов
/ 31 марта 2010

Добавьте эту строку в файл конфигурации ckeditor.js:

n.setRules('p',{indent:false,breakAfterOpen:false});

Подробнее о форматировании HTML Writer можно найти в Руководство разработчика: Форматирование вывода в CKSource Docs.

1 голос
/ 10 декабря 2012

Если вы похожи на меня и хотели бы сделать это на уровне экземпляра и не хотите прикасаться к файлам конфигурации, чтобы их было легко обновлять / обновлять. Тогда вот другое решение.

CKEDITOR.replace( 'editor1',
{
    on :
    {
        instanceReady : function( ev )
        {
            // Output paragraphs as <p>Text</p>.
            this.dataProcessor.writer.setRules( 'p',
                {
                    indent : false,
                    breakBeforeOpen : true,
                    breakAfterOpen : false,
                    breakBeforeClose : false,
                    breakAfterClose : true
                });
        }
    }
});

Ссылка: Форматирование вывода

1 голос
/ 30 марта 2010

Я считаю, что есть настройка для форматирования кода, или авто-отступ или что-то в этом роде. Он был призван сделать исходный код более читабельным. Я полагаю, что эффективность открыта для мнения.

0 голосов
/ 04 октября 2017

Лучшее решение, которое будет работать как шарм:

edit contents.css файл и стиль настройки для абзацев, например

 p {
     margin-top:0px;
     margin-bottom:5px;
 }
...