J'utilise ckeditor sur mon site Web pour faciliter la saisie de code HTML par les utilisateurs.
Cependant, les données que je récupère de ckeditor sont enveloppées dans <p></p>
blocs. (Ce que je ne veux pas.)
Y a-t-il un paramètre de configuration qui force l'éditeur à ne pas encapsuler le texte dans quoi que ce soit?
Ajoutez ce qui suit à votre fichier config.js pour CKEditor:
config.enterMode = CKEDITOR.ENTER_BR;
Exemple:
...
CKEDITOR.editorConfig = function (config)
{
config.enterMode = CKEDITOR.ENTER_BR;
...
};
Le paramètre de configuration qui contrôle ce comportement est basé sur ce que vous voulez faire lorsque l'utilisateur appuie sur Enter.
Juste au cas où quelqu'un qui est nouveau dans le travail avec HTML lit ceci, j'inclus une explication de base des concepts impliqués et pourquoi une balise devra être insérée lorsque le Enter touche est enfoncée.
Nous savons que si nous entrons du texte dans un document HTML et que nous mettons ensuite du texte supplémentaire sur une nouvelle ligne, le navigateur n'affichera pas le texte sur deux lignes, il ignorera tous les retours chariot et condensera plusieurs espaces entre les caractères en un seul espace.
Le HTML suivant:
qwer
tyui
Sera rendu comme:
qwer tyui
L'éditeur doit donc insérer une balise HTML pour indiquer au navigateur qu'il doit afficher le deuxième groupe de texte sur une nouvelle ligne.
Le paramètre de configuration qui contrôle cela est config.enterMode
et il offre trois options:
Le paramètre par défaut crée un élément de paragraphe à chaque fois Enter est pressé:
config.enterMode = CKEDITOR.ENTER_P; // inserts `<p>...</p>`
Vous pouvez choisir de créer un élément div
au lieu d'un paragraphe:
config.enterMode = CKEDITOR.ENTER_DIV; // inserts `<div></div>`
Si vous préférez ne pas envelopper le texte dans quoi que ce soit, vous pouvez choisir d'insérer une balise de saut de ligne:
config.enterMode = CKEDITOR.ENTER_BR; // inserts `<br />`
La documentation de CKEditor indique que l'utilisation de ENTER_BR
le réglage n'est pas recommandé :
Remarque: il est recommandé d'utiliser le
CKEDITOR.ENTER_P
paramètre en raison de sa valeur sémantique et de son exactitude. L'éditeur est optimisé pour ce paramètre.
Il existe un deuxième paramètre qui contrôle une situation similaire –config.autoParagraph
. Son fonctionnement dépend du config.enterMode
paramètre décrit ci-dessus.
autoParagraph
détermine si les éléments en ligne tels que span
sont encapsulés dans l'élément de bloc (p
ou div
) spécifié par le paramètre enterMode
. La valeur par défaut consiste à encapsuler les éléments en ligne, donc si vous entrez une étendue comme celle-ci (au format HTML):
<span>asdfg</span>
Il sera enveloppé dans un élément p ou div comme ceci:
<p><span>asdfg</span></p>
ou ca:
<div><span>asdfg</span></div>
L'élément en ligne ne sera pas encapsulé si vous le définissez sur false
ou si vous définissez enterMode
sur CKEDITOR.ENTER_BR
.
La documentation de CKEditor comprend cette note sur config.autoParagraph
:
Remarque: la modification de la valeur par défaut peut entraîner des problèmes d'utilisation imprévisibles.
Il existe trois autres paramètres qui sont quelque peu liés à ce sujet:
config.fillEmptyBlocks
config.forceEnterMode
config.ignoreEmptyParagraph
Une liste complète des options de configuration disponibles peut être trouvée ici:
Je sais que je suis un peu en retard dans le jeu, mais je pense que l'option que l'OP recherche est la suivante:
config.autoParagraph = false;
Une solution très simple sans aucun changement de configuration est d'utiliser
shift
+ enter
pour un saut de ligne <br>
, etenter
provoquerait un nouveau paragraphe.L'avantage est que vous n'avez pas à modifier la configuration. De plus, vous avez les deux.
Ceci est parfaitement bien répondu ci-dessus, mais comme mentionné, vous ne devriez pas vraiment changer cela dans la configuration principale.
La bonne façon de le faire est vraiment par .replace.
c'est à dire.
<form name="title" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>">
<textarea id="editor2" name="editor2" rows="300"><?php echo $editor2;?></textarea>
<textarea id="editor1" name="editor1" rows="1" cols="50" onfocus="this.value=''; this.onfocus=null;">Type Tab Title Here:</textarea>
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
CKEDITOR.replace( 'editor2', {
enterMode: CKEDITOR.ENTER_BR,
on: {'instanceReady': function (evt) { evt.editor.execCommand('maximize'); }},
});
</script>
Si vous souhaitez exclure <p>
tag et ne voulez que l'outil d'édition de base comme Bold Italic superscript Subscript etc dans Ckeditor puis suivez ces étapes:
J'en suis sûr à 100% car j'ai fait des recherches pendant 36 heures en continu :)
Étape 1: ajoutez ce script dans votre page Web PHP
<script type="text/javascript">
CKEDITOR.replace( 'editor1', {
enterMode: CKEDITOR.ENTER_BR,
on: {'instanceReady': function (evt) { evt.editor.execCommand('');}},
});
</script>
Étape 2: ajoutez id="editor2"
et onfocus="this.value='';"
dans votre zone de texte comme celle-ci
<textarea id="editor2" name="AsYourWish" onfocus="this.value='';">
Étape 3: assurez-vous que supprimer Class="ckeditor"
de Textarea.
Étape 4: rechargez votre page Web si cela ne s'est pas produit Supprimez le cache/l'historique et redémarrez le PC/ordinateur portable.
Étape 5: c'est fait :)
Pour Django-ckeditor
ajoutez cette configuration dans votre settings.py
fichier:
ENTER_P = 1 # default
ENTER_BR = 2
ENTER_DIV = 3
CKEDITOR_CONFIGS = {
'default': {
'enterMode': ENTER_BR,
},
}