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

Ckeditor не читает код вставки мультимедиа

Я использую плагин media embed для ckeditor. Он отлично работает, код корректно сохраняется в базе данных и youtube, soundcloud etd. игроки отображают ok на странице. Но когда пользователь переходит к своей администрации, где он может редактировать информацию, текст внутри и с тегами не отображается, поэтому, когда пользователь нажимает кнопку сохранения, все ранее сохраненные iframe будут "стерты", а остальные отформатированного текста будут сохранены. Есть ли способ отобразить код iframe в ckeditor?

4b9b3361

Ответ 1

Я предполагаю, что вы используете CKEditor 4.1.x, который поставляется с Advanced Content Filter (ACF). Скорее всего, дело в том, что вы используете разные редакторы для редактирования интерфейса/бэкэнд.

Каждый плагин расширяет свойство allowedContent с собственными правилами для тегов, атрибутов и классов. Используя эти правила, редактор автоматически вытесняет нежелательное содержимое, например, если ваш выложенный редактор разрешает <iframe>, потому что он загружен плагином mediaembed, тогда ваш внутренний редактор без этого плагина удалит ваш <iframe> из содержимого.

Кроме того, ACF также отслеживает вашу конфигурацию панели инструментов, поэтому, даже если вы включите плагин, но вы не хотите, чтобы кнопка на панели инструментов, любой контент, который предоставляет кнопка (т.е. <iframe>), также будет запрещен в выходе редактора.

Вы можете легко проверить, принимает ли ваш редактор <iframes>. В основном вызывайте следующее и смотрите вывод:

CKEDITOR.instances.yourInstance.filter.check( 'iframe' );
>>> true // it allowed

Если это false, то есть несколько решений для вашей проблемы:

  • Включите плагин mediaembed в своем backend-редакторе (с кнопкой на панели инструментов).
  • Расширьте config.extraAllowedContent, чтобы вернуть его обратно.

В то время как первое решение является простым, второе может оказаться сложным для вас. Правило allowedContent для медиа-подключенного плагина выглядит следующим образом (см. код плагина):

allowedContent: 'iframe[*]' // stands for: iframe element with any attribute

Если вы добавите следующее в конфигурацию вашего backend-редактора, вы будете иметь iframes обратно в свой контент, не загружая плагин mediaembed:

config.extraAllowedContent = 'iframe[*]'

Если это решение не работает для вас, предоставьте конфигурацию редакторов и версию CKEditor, чтобы люди могли вам помочь.

Ответ 2

CKEDITOR.config.allowedContent = true;

работайте для меня.