it-swarm.com.de

Deaktivieren Sie das Einschließen von <p> -Tags in CKEditor 3.0

Gibt es eine Möglichkeit, das automatische Einschließen aller geschriebenen Inhalte in <p> </ p> in CKEditor 3.x zu deaktivieren?

Ich habe es versucht 

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

dies ändert jedoch nur die Inline-Zeilenumbrüche in <br />, während der umschließende Absatz verlassen wird.

Beim Schreiben von "Test" wird diese Ausgabe erzeugt

<p>
    Test</p>

aber ich will es einfach sein

Test

Gibt es dafür eine Konfigurationseigenschaft oder wäre ein anderer Inline-Editor dafür besser geeignet?

59
Kosi2801

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR; - das funktioniert perfekt für mich . Haben Sie versucht, Ihren Browser-Cache zu löschen - dies ist manchmal ein Problem.
Sie können es auch mit dem jQuery-Adapter überprüfen:

<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>


UPDATE gemäß @ Tomkays Kommentar:

Seit Version 3.6 von CKEditor können Sie konfigurieren, ob Inline-Inhalte automatisch mit Tags wie <p></p> verpackt werden sollen. Dies ist die richtige Einstellung:

CKEDITOR.config.autoParagraph = false;

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

81

Im Internet ist bekannt, dass durch das Setzen von config.enterMode auf CKEDITOR.ENTER_BR die umschließenden Absatz-Tags aus CKEditor entfernt werden. Es ist erwähnenswert, dass die Einstellung das Verhalten der Eingabetaste ändert, um Zeilenumbrüche anstelle von Absätzen einzufügen, was nicht wünschenswert ist.

Siehe: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode "Es wird empfohlen, die Einstellung CKEDITOR.ENTER_P wegen ihres semantischen Wertes und ihrer Richtigkeit zu verwenden."

Die Einstellung, mit der der ursprüngliche Absatz entfernt werden soll, config.autoParagraph, ist jedoch nicht ratsam, da er "unvorhersehbare Probleme mit der Benutzerfreundlichkeit" einführt, da der Editor really ein Blockelement der obersten Ebene wünscht.

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

Die Magie geschieht in wysiwygarea/plugin.js, Zeile 410, wo der Editor das Standardblockelement auf der Basis von config.enterMode auswählt. Eine Konfigurationsoption zum Ändern des Standardblockelements würde es uns ermöglichen, mit einem div zu beginnen, aber wir würden mit jedem Drücken der Eingabetaste weitere divs erhalten, es sei denn, wir haben das Absatzformat über das Menü geändert.

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

Es wäre möglich, das umschließende Absatz-Tag mit Nachbearbeitung (entweder auf dem Server oder im getData-Ereignis von CKEditor) zu entfernen, was jedoch zu dem gleichen Problem führt wie das Deaktivieren von autoParagraph: Es gibt keinen Block der obersten Ebene.

Ich würde eher sagen, dass es keine gute Lösung gibt, sondern eher eine Handvoll Halblösungen, als die Änderung von config.enterMode als kanonische Lösung zu akzeptieren.

32
Michael Hellein

Versuchen Sie dies in config.js

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

Fand es!

ckeditor.js Zeile # 91 ... suchen nach 

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

ändern

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

Gib deinen Cache und BAM aus!

5
PHPGuy

Machen Sie diesen Code für Ihre 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
    };
3

Ich mache etwas, auf das ich nicht als Workaround stolz bin. In meinem Python-Servlet, das tatsächlich in der Datenbank gespeichert wird, mache ich Folgendes:

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

Machen Sie diesen Code für Ihre config.js-Datei

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

Bearbeiten Sie die Quelle (oder deaktivieren Sie Rich Text) und ersetzen Sie das p-Tag durch ein div. Dann stylen Sie das div nach Belieben.

ckEditor fügt beim nächsten Senden kein Wrapper-Element hinzu, da dort das div vorhanden ist.

(Dies löste mein Problem, ich verwende Drupal und brauche kleine HTML-Ausschnitte, die der Editor immer hinzufügte, aber den Rest der Zeit möchte ich das p-Tag der Umhüllung).

1
chim

Legen Sie eine solche Konfiguration fest:

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