Désactiver les balises enfermant dans CKEditor 3.0

Est-il possible de désactiver l'enfermement automatique de tout le contenu écrit dans

dans CKEditor 3.x?

J'ai essayé

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

Mais cela change simplement les sauts de ligne en ligne en
tout en laissant le paragraphe englobant.

En cours d'écriture "Test" produit cette sortie

<p>
    Test</p>

Mais je veux que ce soit simplement

Test

Existe-t-il une propriété de configuration pour cela ou un autre éditeur en ligne serait-il mieux adapté à cela?

57
demandé sur Kosi2801 2009-12-30 03:28:47

11 réponses

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR; - cela fonctionne parfaitement pour moi. Avez - vous essayé de vider le cache de votre navigateur-c'est parfois un problème.
Vous pouvez également le vérifier avec l'adaptateur 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>


mise à jour selon le commentaire de @Tomkay:

Depuis la version 3.6 de CKEditor, vous pouvez configurer si vous voulez que le contenu en ligne soit automatiquement enveloppé avec des balises comme <p></p>. C'est la bonne réglage:

CKEDITOR.config.autoParagraph = false;

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

75
répondu Maksymilian Majer 2014-07-24 09:17:55

Sur internet, les gens ont remarqué que la configuration de la configuration.entrermode à CKEDITOR.ENTER_BR supprime les balises de paragraphe d'emballage de CKEditor. Il est à noter que le paramètre modifie le comportement de la touche Entrée pour insérer des sauts de ligne plutôt que des paragraphes, ce qui n'est pas souhaitable.

Voir: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode " il est recommandé d'utiliser le CKEDITOR.ENTER_P en raison de sa valeur sémantique et exactitude."

Cependant, le paramètre qui est conçu pour supprimer ce paragraphe initial, config.autoParagraph, n'est pas non plus conseillé, car il introduit des "problèmes d'utilisabilité imprévisibles" car l'éditeur veut vraiment un élément de bloc de niveau supérieur.

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

La magie se produit sur wysiwygarea / plugin.js, ligne 410, où l'éditeur sélectionne l'élément de bloc par défaut en fonction de config.enterMode. Une option de configuration pour changer l'élément de bloc par défaut nous permettrait de commencer par un div, mais nous continuerions à obtenir plus de divs à chaque entrée, sauf si nous changions le format de paragraphe via le menu.

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

Il serait possible de supprimer la balise de paragraphe d'emballage avec un post-traitement (soit sur le serveur ou dans L'événement GetData de CKEditor), mais cela nous amène à le même problème que la désactivation de l'autoParagraph: il n'y a pas de bloc de niveau supérieur.

Je dirais plutôt qu'il n'y a pas une bonne solution, mais plutôt une poignée de demi-solutions, que d'accepter la modification de la configuration.enterMode comme solution canonique.

32
répondu Michael Hellein 2012-01-06 16:57:54

Essayez ceci dans config.js

CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};
9
répondu John W 2011-03-07 16:30:18

Trouvé!

Ckeditor.ligne js # 91 ... rechercher

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

Changer pour

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

Videz votre cache et BAM!

5
répondu PHPGuy 2011-10-13 16:35:07

Faites-en votre config.code de fichier 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
répondu Timothy Nwanwene 2015-04-28 03:02:47

Je fais quelque chose dont je ne suis pas fier comme solution de contournement. Dans mon servlet Python qui enregistre réellement dans la base de données, je fais:

if description.startswith('<p>') and description.endswith('</p>'):
    description = description[3:-4]
2
répondu derwiki 2010-03-05 22:53:53

Modifiez la source (ou désactivez le texte enrichi) et remplacez la balise p par un div. Ensuite, Stylez la div comme vous le souhaitez.

CkEditor n'ajoutera aucun élément wrapper lors de la prochaine soumission car vous avez la div.

(cela a résolu mon problème, j'utilise Drupal et j'ai besoin de petits extraits de html que l'éditeur a toujours ajouté, mais le reste du temps je veux la balise p d'emballage).

1
répondu chim 2012-12-13 12:07:35
if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}
1
répondu Lars 2014-04-01 17:41:24

Faites-en votre config.code de fichier 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
répondu Timothy Nwanwene 2015-04-28 02:36:04

Définir une telle configuration:

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true
0
répondu Evan Ross 2017-08-22 13:07:18

Dans VS2015, cela a fonctionné pour transformer la touche Entrée en <br>

myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR

Personnellement, je ne me soucie pas si mon texte résultant a seulement <br> et non <p>. Il rend parfaitement bien et il ressemble à ce que je veux. En fin de compte, il fonctionne.

-1
répondu Joe Schmucker 2017-09-15 13:37:56