2012-09-04 18 views
6

¿Cómo agregaría clases personalizadas o una ID a los párrafos de texto en CKEditor? Me gustaría cargar las clases posibles de DB y escribirlas en la lista en la que estarían cuando se cargue CKE. Los ID simplemente se inventarían en el acto. Las clases y los ID se usarían para marcar un texto como una nota al pie o un pie de foto.¿Cómo agregar clases de CSS y una ID a los párrafos en CKEditor?


Para que quede claro, no quiero cambiar el estilo visible el texto utilizando los cuadros desplegables, quiero añadir clases CSS que se pueden utilizar para el estilo del elemento Después de que se ha guardado -dependiendo en donde se usa.

Respuesta

3

Aquí tienes. Este código numerará tus párrafos con identificadores posteriores y también agregará una clase personalizada a cada párrafo que aún no se haya asignado.

var idCounter = 0, 
    pClass = 'myCustomClass', 
    pClassRegexp = new RegExp(pClass, 'g'); 

CKEDITOR.replace('editor1', { 
    on: { 
     instanceReady: function() { 
      this.dataProcessor.htmlFilter.addRules({ 
       elements: { 
        p: function(element) { 
         // If there's no class, assing the custom one: 
         if (!element.attributes.class) 
          element.attributes.class = pClass; 

         // It there's some other class, append the custom one: 
         else if (!element.attributes.class.match(pClassRegexp)) 
          element.attributes.class += ' ' + pClass; 

         // Add the subsequent id: 
         if (!element.attributes.id) 
          element.attributes.id = 'paragraph_' + ++idCounter; 
        } 
       } 
      }); 
     } 
    } 
}); 
+0

'class' es una palabra reservada en JS, se debe envolver entre comillas : 'element.attributes ['class']' – fncomp

+0

Formulé mi pregunta un poco mal: PI quería que el usuario actual del editor decidiera qué ID y qué clase dar a un determinado elemento. De todos modos, gracias por la entrada. Mi recompensa era por llamar la atención sobre este tema, así que lo estoy adjudicando a la única atención que recibió :) – Nenotlep

+0

Esto era exactamente lo que estaba buscando :) Con algunas modificaciones (necesitaría alguna identificación SHA1) debería funcionar perfectamente. ¡Muchas gracias! :) –

0

he dado la vuelta y hecho algo como esto (estoy usando CKeditor 4.4.7):

editor.addCommand('colSm1', { 
    exec: function (editor) { 
    var $element = editor.elementPath().block; 

    if ($element.getAttribute('class') == null) { 
     $element.addClass('col-sm-1'); 
    } 
}); 
Cuestiones relacionadas