145

Web サイトのバックエンド エディターとしてCKEditorを使用しています。ソースボタンを押すたびに、コードを適切な方法に変更したいように見えるので、曲がりくねっています。たとえば、ソースをヒットして作成すると<div>...

<div class="myclass">some content</div>

その後、明らかな理由もなく からクラスが削除されるため、<div>ソースをもう一度押すと、次のように変更されました...

<div>some content</div>

この刺激的な動作は でオフにできるとconfig.js思いますが、掘り下げていて、ドキュメントでそれをオフにするものを見つけることができません。

4

13 に答える 13

292

コンテンツ フィルタリングの無効化

最も簡単な解決策は、config.jsと設定に移動することです。

config.allowedContent = true;

(ブラウザのキャッシュをクリアすることを忘れないでください)。その後、CKEditor は入力されたコンテンツのフィルタリングをまったく停止します。ただし、これにより、最も重要な CKEditor 機能の 1 つであるコンテンツ フィルタリングが完全に無効になります。

コンテンツ フィルタリングの構成

必要な要素、クラス、スタイル、および属性のみを許可するように、CKEditor のコンテンツ フィルターをより正確に構成することもできます。CKEditor は、コンテンツをコピーして貼り付けるときにブラウザーが生成する多くのくだらない HTML を引き続き削除しますが、必要なコンテンツは削除しないため、このソリューションははるかに優れています。

たとえば、デフォルトの CKEditor の構成を拡張して、すべての div クラスを受け入れることができます。

config.extraAllowedContent = 'div(*)';

またはいくつかのブートストラップのもの:

config.extraAllowedContent = 'div(col-md-*,container-fluid,row)';

または、要素と要素のオプションのdir属性を持つ説明リストを許可できます。dtdd

config.extraAllowedContent = 'dl; dt dd[dir]';

これらは非常に基本的な例にすぎません。あらゆる種類のルールを記述できます - 属性、クラス、またはスタイルを要求し、特別な要素のみに一致し、すべての要素に一致します。また、許可を拒否して、CKEditor のルールを完全に再定義することもできます。詳細を読む:

于 2013-03-27T13:24:51.760 に答える
16

編集: この回答は、drupal で ckeditor モジュールを使用する人向けです。

ckeditor js ファイルを変更する必要のない解決策を見つけました。

この回答はhereからコピーされます。すべてのクレジットは元の著者に帰属する必要があります。

「管理 >> 構成 >> CKEditor」に移動します。[プロファイル] で、プロファイル (例: フル) を選択します。

そのプロファイルを編集し、「詳細オプション >> カスタム JavaScript 構成」に を追加しconfig.allowedContent = true;ます。

ここに画像の説明を入力

[パフォーマンス] タブでキャッシュをフラッシュすることを忘れないでください。

于 2014-01-12T17:37:56.960 に答える
14

CKEditor v4.1 以降、CKEditor の config.js でこれを行うことができます。

CKEDITOR.editorConfig = function( config ) {
  config.extraAllowedContent = '*[id](*)';  // remove '[id]', if you don't want IDs for HTML tags
}

許可されたコンテンツ ルールの詳細な構文については、公式ドキュメントを参照してください。

于 2013-06-06T02:22:57.173 に答える
10

ckeditor 4.x を使用している場合は、試すことができます

config.allowedContent = true;

ckeditor 3.x を使用している場合、この問題が発生している可能性があります。

次の行をconfig.jsに入れてみてください

config.ignoreEmptyParagraph = false;
于 2013-03-27T13:30:06.813 に答える
6

公式の高度なコンテンツ フィルター ガイドプラグイン統合チュートリアルを参照してください。

この強力な機能については、これだけではありません。ニーズに適していると思われるconfig.extraAllowedContentも参照してください。

于 2013-03-27T15:20:46.830 に答える
5

以下はCKEDITOR 4.xの完全な例です:

HTML

<textarea name="post_content" id="post_content" class="form-control"></textarea>

脚本

CKEDITOR.replace('post_content', {
   allowedContent:true,
});

上記のコードは、エディター内のすべてのタグを許可します。

詳細については、CK EDITOR 許可されたコンテンツ ルールを参照してください。

于 2017-04-28T13:17:47.387 に答える
0

フィルター処理された html の代わりに完全な html を使用するように切り替えること (エディターの下の [テキスト形式] ドロップダウン ボックス) が、この問題を解決したことがわかりました。そうしないと、スタイルが失われます。

于 2013-10-28T02:16:49.113 に答える
0

これを追加したいと思います config.allowedContent = true; config.jsではなくckeditor.config.jsファイルに追加する必要があります。config.jsは何もしませんでしたが、ckeditor.config.jsの上部領域に追加するとdivクラスが保持されました

于 2013-10-30T14:13:13.020 に答える
0

drupal を使用する場合の別のオプションは、使用する CSS スタイルを追加することです。そうすれば、スタイルやクラス名が取り除かれません。

したがって、私の場合、drupal 7 の css タブの下に、次のようなものを追加するだけです

facebook=span.icon-facebook2

font-styles ボタンが有効になっていることも確認してください

于 2014-09-04T11:28:59.103 に答える