J'essaie d'autoriser toutes les balises HTML
<div> <p> <span> <i> /* etc */
et attributs HTML comme ci-dessous (classe, id) pour par exemple:
<div id="foo" class="bar" style="z-index:1;">SOME COOL CONTENT HERE</div>
dans ckeditor.
J'ai trouvé quelque chose comme dans docs.ckeditor.com
config.allowedContent = {
$1: {
// Use the ability to specify elements as an object.
elements: CKEDITOR.dtd,
attributes: true,
styles: true,
classes: true
}
};
config.disallowedContent = 'script; *[on*]';
et l'a ajouté à config.js
dans le dossier racine de ckeditor. Mais rien n'a changé. Lorsque j'essaie d'ajouter des balises HTML au bloc de code source de ckeditor, il efface tout le contenu html.
Qu'est-ce qui me manque? Merci d'avance.
Version: ## CKEditor 4.4.7
EDIT & UPDATE:
Après les réponses @Eelke et @Necreaux, j’ai ajouté allowedContent = true
dans mon config.js. Maintenant, les éléments HTML de base tels que <div> <span> <h3>
fonctionnent parfaitement. Mais ckeditor continue à utiliser des balises <i>
.
Complètement Config JS
CKEDITOR.editorConfig = function( config ) {
config.allowedContent = true;
config.removeFormatAttributes = '';
// Define changes to default configuration here.
// For complete reference see:
// http://docs.ckeditor.com/#!/api/CKEDITOR.config
// The toolbar groups arrangement, optimized for two toolbar rows.
config.toolbarGroups = [
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
{ name: 'links' },
{ name: 'insert' },
{ name: 'forms' },
{ name: 'tools' },
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'others' },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
{ name: 'styles' },
{ name: 'colors' },
{ name: 'about' }
];
// Remove some buttons provided by the standard plugins, which are
// not needed in the Standard(s) toolbar.
config.removeButtons = 'Underline,Subscript,Superscript';
// Set the most common block elements.
config.format_tags = 'p;h1;h2;h3;pre;';
// Simplify the dialog windows.
config.removeDialogTabs = 'image:advanced;link:advanced';
};
La première chose à faire est de savoir pourquoi certains éléments, attributs, styles et classes sont supprimés quel que soit leur contenu. Ceci est causé par le Filtre de contenu avancé . Voir cette question pour plus de détails sur la modification de ses paramètres: CKEditor supprime automatiquement les classes de div
Une autre chose est pourquoi les éléments en ligne vides sont supprimés, qu'ils soient autorisés ou non. Cette question a également déjà été posée - voir les bandes CKEditor <i> Tag - remarque: il n’ya pas qu’une bonne réponse.
Si tout est permis, vous pouvez utiliser allowedContent = true
Avez-vous essayé le suivant?
config.allowedContent = true;
config.removeFormatAttributes = '';
voici les balises que CKEditor 4 supprime lorsqu'elles sont vides:
abbr, acronyme, b, bdi, bdo, gros, citer, code, del, dfn, em, police, i, ins, étiquette, marque, compteur, sortie, q, Ruby, s, samp, petit grève, forte, sous, sup, temps, tt, u, var
pour autoriser toutes les balises vides - essayez d'ajouter ceci à config.js:
for(var tag in CKEDITOR.dtd.$removeEmpty){
CKEDITOR.dtd.$removeEmpty[tag] = false;
}
Avez-vous essayé cela?
<script>
CKEDITOR.replace( 'text-area-id' );
CKEDITOR.config.allowedContent = true;
</script>
Réponse pour CKEditor 4.
N'allez pas avec l'ancienne version de CKEditor et ce type de configuration.
Ajoutez simplement config.allowedContent = true;
dans votre configuration. Il permettra à toutes les balises.