私はckeditorのメディア埋め込みプラグインを使用しています。それは正常に動作し、コードはデータベースとYouTube、soundcloud etdに正しく保存されます。プレーヤーはページに[ok]を表示します。ただし、ユーザーが情報を編集できる管理画面に移動すると、内部のタグ付きのテキストは表示されないため、ユーザーが保存ボタンをクリックすると、以前に保存されたすべてのiframeが「消去」され、残りのiframeのみが削除されますフォーマット済みテキストのが保存されます。 ckeditorでiframeコードを表示する方法はありますか?
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
の場合、問題の解決策はいくつかあります。
config.extraAllowedContent
を拡張して、元に戻します。最初の 解決法は簡単です ですが、2番目の方法は難しいかもしれません。 mediaembedプラグインのallowedContent
ルールは次のとおりです( プラグインのコード を参照):
allowedContent: 'iframe[*]' // stands for: iframe element with any attribute
以下をバックエンドエディターの設定に追加すると、mediaembedプラグインを読み込まなくても、コンテンツにiframeが戻されます。
config.extraAllowedContent = 'iframe[*]'
このソリューションがうまくいかない場合は、人々があなたを助けることができるように、エディター構成とCKEditorバージョンを提供してください。
CKEDITOR.config.allowedContent = true;
私のために働きます。
CKEditorがカスタムHTMLを非表示にせずに保存できるようにするには、許可コンテンツフラグをtrueに設定する必要があります。
var allowedContent = true; // to allow custom html like iframe or div's
CKEDITOR.replace('yourEditorWindowsId', {
allowedContent
},