web-dev-qa-db-ja.com

CKEditor 3.0で<p>タグを囲むことをオフにします

CKEditor 3.xの<p> </ p>内のすべての書かれたコンテンツの自動封入をオフにする可能性はありますか?

私は試した

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

しかし、これはインラインの改行を<br />に変更するだけで、囲んでいる段落はそのままになります。

現在、「Test」と記述すると、この出力が生成されます

<p>
    Test</p>

しかし、私はそれが単純になりたい

Test

これに構成プロパティはありますか、またはこれに適した別のインラインエディターがありますか?

61
Kosi2801

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;-これは私にとって完璧に機能します。ブラウザのキャッシュをクリアしようとしましたか?これは時々問題です。
jQueryアダプターを使用してチェックアウトすることもできます。

<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script>
<script type="text/javascript">
$(function() {
    $('#your_textarea').ckeditor({
        toolbar: 'Full',
        enterMode : CKEDITOR.ENTER_BR,
        shiftEnterMode: CKEDITOR.ENTER_P
    });
});
</script>


@ Tomkayのコメントによる更新:

CKEditorのバージョン3.6以降、インラインコンテンツを<p></p>などのタグで自動的にラップするかどうかを構成できます。これは正しい設定です。

CKEDITOR.config.autoParagraph = false;

ソース: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

86

インターネット全体で、config.enterModeをCKEDITOR.ENTER_BRに設定すると、CKEditorからラッピング段落タグが削除されることがわかりました。この設定によってEnterキーの動作が変更され、段落ではなく改行が挿入されることに注意してください。これは望ましくありません。

参照: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode "そのため、CKEDITOR.ENTER_P設定を使用することをお勧めします意味的価値と正確さ。」

ただし、その最初の段落config.autoParagraphを削除するように設計された設定は、エディターreally最上位のブロック要素が必要です。

参照: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

この魔法は、wysiwygarea/plugin.jsの410行目で発生し、エディターはconfig.enterModeに基づいてデフォルトのブロック要素を選択します。デフォルトのブロック要素を変更する設定オプションを使用すると、divで開始できますが、メニューを使用して段落形式を変更しない限り、Enterキーを押すたびにさらにdivを取得し続けます。

参照: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html

後処理で(サーバー上またはCKEditorのgetDataイベントで)折り返し段落タグを削除することは可能ですが、それはautoParagraphを無効にするのと同じ問題につながります。トップレベルのブロックはありません。

Config.enterModeの変更を標準的なソリューションとして受け入れることよりも、良いソリューションではなく、いくつかの半分のソリューションがあると言いたいです。

32
Michael Hellein

Config.jsでこれを試してください

CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};
9
John W

それを見つけた!

ckeditor.js行#91 ...検索

B.config.enterMode==3?'div':'p'

への変更

B.config.enterMode==3?'div':''(NO P!)

キャッシュとBAMをダンプします!

5
PHPGuy

これをconfig.jsファイルコードにします

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR; // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };
4

私は回避策として誇りに思っていないことをしています。私のPython実際にデータベースに保存するサーブレットで、私はします:

if description.startswith('<p>') and description.endswith('</p>'):
    description = description[3:-4]
2
derwiki

これをconfig.jsファイルコードにします

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };
1
if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}
1
Lars

ソースを編集(またはリッチテキストをオフ)し、pタグをdivに置き換えます。次に、必要な方法でdivのスタイルを設定します。

ckEditorは、divが含まれているため、次の送信時にラッパー要素を追加しません。

(これで問題が解決しました。Drupalを使用しており、エディターが常に追加するHTMLの小さなスニペットが必要ですが、残りの時間はpタグのラッピングが必要です)。

1
chim

そのような構成を設定します。

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true
0
Evan Ross