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

Отключить теги <p>в CKEditor 3.0

Есть ли возможность отключить автоматическое закрытие всего записанного контента внутри <p> </p> в CKEditor 3.x?

Я пробовал

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

но это просто изменяет линии linebreaks на < br/ > оставляя прилагаемый абзац.

В настоящее время запись "Test" производит этот вывод

<p>
    Test</p>

но я хочу, чтобы это было просто

Test

Есть ли свойство конфигурации для этого, или другой встроенный редактор лучше подходит для этого?

4b9b3361

Ответ 1

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR; - это отлично работает для меня. Вы пытались очистить кеш браузера - иногда это проблема.
Вы также можете проверить его с помощью адаптера jQuery:

<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script>
<script type="text/javascript">
$(function() {
    $('#your_textarea').ckeditor({
        toolbar: 'Full',
        enterMode : CKEDITOR.ENTER_BR,
        shiftEnterMode: CKEDITOR.ENTER_P
    });
});
</script>


ОБНОВЛЕНИЕ в соответствии с комментарием @Tomkay:

Начиная с версии 3.6 CKEditor вы можете настроить, хотите ли вы, чтобы встроенный контент был автоматически обернут тегами, например <p></p>. Это правильная настройка:

CKEDITOR.config.autoParagraph = false;

Источник: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

Ответ 2

Через Интернет люди заметили, что настройка config.enterMode на CKEDITOR.ENTER_BR удаляет теги абзаца обертывания из CKEditor. Стоит отметить, что настройка изменяет поведение клавиши ввода для вставки разрывов строк, а не абзацев, что нежелательно.

Смотрите: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode "Рекомендуется использовать параметр CKEDITOR.ENTER_P из-за его семантического значения и правильности."

Однако параметр, который предназначен для удаления этого начального абзаца, config.autoParagraph, также не рекомендуется, поскольку он вводит "непредсказуемые проблемы удобства использования", потому что редактор действительно хочет элемент верхнего уровня.

Смотрите: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

Магия происходит на wysiwygarea/plugin.js, строка 410, где редактор выбирает элемент блокировки по умолчанию на основе config.enterMode. Параметр конфигурации для изменения элемента блока по умолчанию позволит нам начать с div, но мы продолжим получать больше div с каждым нажатием ввода, если мы не изменим формат абзаца через меню.

Смотрите: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html

Можно было бы удалить тег абзаца обертывания с последующей обработкой (либо на сервере, либо в событии getData CKEditor), но это приводит нас к той же проблеме, что и отключение autoParagraph: там нет блока верхнего уровня.

Я бы сказал, что нет хорошего решения, а скорее несколько полурешений, чем принять изменение config.enterMode как канонического решения.

Ответ 3

Попробуйте это в config.js

CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};

Ответ 4

Нашел его!

ckeditor.js строка # 91... поиск

B.config.enterMode==3?'div':'p'

измените на

B.config.enterMode==3?'div':'' (NO P!)

Сбросьте свой кеш и BAM!

Ответ 5

СДЕЛАЙТЕ ЭТО СВОЙ файл config.js

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR; // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };

Ответ 6

Я делаю то, чем я не горжусь, как обход. В моем сервлете Python, который фактически сохраняет базу данных, я делаю:

if description.startswith('<p>') and description.endswith('</p>'):
    description = description[3:-4]

Ответ 7

if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}

Ответ 8

Отредактируйте источник (или отключите расширенный текст) и замените тег p на div. Затем создайте div любым способом, который вы хотите.

ckEditor не добавит какой-либо элемент-оболочку в следующий submit, так как у вас есть div.

(Это решило мою проблему, я использую Drupal и нуждаюсь в небольших фрагментах html, которые редактор всегда добавлял дополнительно, но в остальное время мне нужен тэг wrapping).

Ответ 9

СДЕЛАЙТЕ ЭТОТ ВАШ код файла config.js

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };

Ответ 10

Задайте такую ​​конфигурацию:

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true

Ответ 11

В VS2015 это сработало, чтобы превратить клавишу Enter в <br>

myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR

Лично мне все равно, имеет ли мой итоговый текст <br>, а не <p>. Он отлично выглядит и выглядит так, как я этого хочу. В конце концов, он работает.