Отключить теги <p>в CKEditor 3.0
Есть ли возможность отключить автоматическое закрытие всего записанного контента внутри <p> </p> в CKEditor 3.x?
Я пробовал
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
но это просто изменяет линии linebreaks на < br/ > оставляя прилагаемый абзац.
В настоящее время запись "Test" производит этот вывод
<p>
Test</p>
но я хочу, чтобы это было просто
Test
Есть ли свойство конфигурации для этого, или другой встроенный редактор лучше подходит для этого?
Ответы
Ответ 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>
. Он отлично выглядит и выглядит так, как я этого хочу. В конце концов, он работает.