2013-06-07 41 views
17

私はckeditorのメディア埋め込みプラグインを使用しています。それは正常に動作し、コードは正しくデータベースとYouTube、soundcloud etdに保存されます。プレイヤーはページにOKを表示します。しかし、ユーザーが管理に行き、情報を編集できる場所では、タグ内のテキストとタグ付きのテキストが表示されないため、保存ボタンをクリックすると、以前に保存されたiframeはすべて消去され、書式設定されたテキストが保存されます。 ckeditorにiframeコードを表示する方法はありますか?ckeditorはメディアの埋め込みコードを読み取っていません

答えて

37

Advanced Content Filter(ACF)に付属するCKEditor 4.1.xを使用することを前提としています。ほとんどの場合、フロントエンド/バックエンドの編集に異なるエディタを使用することが重要です。

各プラグインは、タグ、属性、およびクラスの独自の規則でallowedContentプロパティを拡張します。これらのルールを使用すると、エディタは自動的に望ましくないコンテンツを取り除きます。たとえば、メディア編集プラグインがロードされているため、編集者がを許可している場合、このプラグインを使用しないバックエンドエディタはコンテンツからを削除します。

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

編集者が<iframes>を受け入れるかどうかを簡単に確認できます。

  1. は、(ツールバーのボタンで)あなたのバックエンドエディタでmediaembedプラグインを有効にします。そして、あなたの問題のいくつかのソリューションがありますが、それはfalseなら

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

    :基本的には、以下の呼び出しと出力を参照してください。

  2. config.extraAllowedContentを元に戻してください。

最初のsolution is straightforwardの間に、2番目のものはあなたにとって難しいかもしれません。

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

はあなたのバックエンドエディタのconfigに以下を追加する場合は、ロードmediaembedプラグインなしで戻ってあなたのコンテンツ内のiframeを持っています:

config.extraAllowedContent = 'iframe[*]' 
mediaembedプラグインの allowedContentルールは以下のように( plugin's codeを参照します)

この解決策がうまくいかない場合は、エディタの設定とCKEditorのバージョンを提供して、人々があなたを助けることができるようにしてください。

+0

これも同様に動作します ** config.extraAllowedContent = 'iframe(*)'; ** –

+1

@SiddharthChauhan [ドキュメント](http://docs.ckeditor.com/#!/guide/dev_acf) '(*)'はどのクラスでも許可します。 '[*]'は任意の属性を許可するためのものです。 – Prim

+0

@Prim私は同意します。私の知識の不足のため申し訳ありません –

17
CKEDITOR.config.allowedContent = true; 

私のために働きます。

+0

受け入れられるようにうまく働いています。 :) –

関連する問題