web-dev-qa-db-ja.com

ckeditorがメディア埋め込みコードを読み取らない

私はckeditorのメディア埋め込みプラグインを使用しています。それは正常に動作し、コードはデータベースとYouTube、soundcloud etdに正しく保存されます。プレーヤーはページに[ok]を表示します。ただし、ユーザーが情報を編集できる管理画面に移動すると、内部のタグ付きのテキストは表示されないため、ユーザーが保存ボタンをクリックすると、以前に保存されたすべてのiframeが「消去」され、残りのiframeのみが削除されますフォーマット済みテキストのが保存されます。 ckeditorでiframeコードを表示する方法はありますか?

19
Michal S

Advanced Content Filter (ACF)に付属しているCKEditor 4.1.xを使用していると思います。おそらく、ポイントはフロントエンド/バックエンドの編集に異なるエディターを使用することです。

各プラグインは、タグ、属性、およびクラスの独自のルールで allowedContent プロパティを拡張します。これらのルールを使用して、エディターは不要なコンテンツを自動的に削除します。たとえば、フロントエディターがmediaembedプラグインを読み込んでいるために<iframe>を許可している場合、このプラグインのないバックエンドエディターはコンテンツから<iframe>を削除します。

さらに、ACFはツールバーの構成も監視するため、プラグインを含めてもボタンをツールバーに含めたくない場合でも、ボタンが提供するコンテンツ(つまり、<iframe>)はエディターの出力で許可されません。

エディターが<iframes>を受け入れるかどうかを簡単に確認できます。基本的に以下を呼び出して、出力を確認します。

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

falseの場合、問題の解決策はいくつかあります。

  1. バックエンドエディターで(メディアプラグインを有効にします(ツールバーのボタンを使用))。
  2. config.extraAllowedContentを拡張して、元に戻します。

最初の 解決法は簡単です ですが、2番目の方法は難しいかもしれません。 mediaembedプラグインのallowedContentルールは次のとおりです( プラグインのコード を参照):

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

以下をバックエンドエディターの設定に追加すると、mediaembedプラグインを読み込まなくても、コンテンツにiframeが戻されます。

config.extraAllowedContent = 'iframe[*]'

このソリューションがうまくいかない場合は、人々があなたを助けることができるように、エディター構成とCKEditorバージョンを提供してください。

41
oleq
CKEDITOR.config.allowedContent = true;

私のために働きます。

23
gokhan

CKEditorがカスタムHTMLを非表示にせずに保存できるようにするには、許可コンテンツフラグをtrueに設定する必要があります。

var allowedContent = true; // to allow custom html like iframe or div's

CKEDITOR.replace('yourEditorWindowsId', {
    allowedContent
},
0
TidyDev