2012-09-04 11 views
6

Jak dodać niestandardowe klasy lub identyfikator do akapitów tekstowych w CKEditorze? Chciałbym załadować możliwe klasy z DB i zapisać je na dowolnej liście, w której się znajdują, podczas ładowania CKE. Identyfikatory będą po prostu składane na miejscu. Klasy i identyfikatory będą używane do oznaczania fragmentów tekstu jako przypisów lub podpisów.Jak dodać klasy CSS i identyfikator do akapitów w CKEditorze?


Żeby było jasne, nie chcę zmieniać Widoczna Styl tekstu za pomocą pól rozwijanych, chcę dodać klas CSS, które mogą być używane do stylu elementu Po to zostało zapisane -depending w którym jest używany.

Odpowiedz

3

Proszę bardzo. Ten kod będzie numerował twoje akapity z kolejnymi identyfikatorami, a także doda klasę niestandardową do każdego akapitu, który nie został jeszcze przypisany.

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' jest zarezerwowanym słowem w JS, należy owinąć w cudzysłowach : 'element.attributes ['class']' – fncomp

+0

Wyraziłem moje pytanie nieco błędnie: PI chciał pozwolić, aby aktualny użytkownik edytora zdecydował, który ID i którą klasę da dany element. W każdym razie, dzięki za wejście. Moja nagroda była za poświęcenie uwagi temu problemowi, więc nagradzam ją jedyną uwagą jaką otrzymałem :) – Nenotlep

+0

To było dokładnie to, czego szukałem :) Z kilkoma modyfikacjami (potrzebowałbym jakiegoś identyfikatora SHA1) powinien działać bezbłędnie. Wielkie dzięki! :) –

0

Poszedłem się i zrobić coś takiego (używam 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'); 
    } 
}); 
Powiązane problemy