Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

Drupal: Toolbar vom CKEDITOR anpassen

In früheren Projekten (wie auch diesem Blog) habe ich immer als WYSIWYG-Editor den TinyMCE und das entsprechende Drupal-Modul verwendet. Dies ist jedoch ein inzwischen veralteter Ansatz und es wird die Nutzung des WYSIWYG-API empfohlen. Deswegen wollte ich bei einem aktuellen Projekt diesen Umstieg vollziehen und gleichzeitig auf den CKEDITOR umsteigen.

Das Problem

Ich möchte im Normalfall immer die Toolbar des Editors anpassen und hierbei auch die Reihenfolge der Buttons festlegen, dies klappte bisher auch wunderbar in der template.php über die Funktion mytheme_tinymce_theme mit nachfolgendem Ansatz:

function mytheme_tinymce_theme($init, $textarea_name, $theme_name, $is_running) {
    if (is_array($init) && ($textarea_name == 'body')) {
        $init['theme'] = 'advanced';
        $init['plugins'] = array(
            'advimage',
            'advlink',
            'paste',
            'pagebreak'
        );
        $init['pagebreak_separator'] = array('<!--break-->');
        $init['theme_advanced_buttons1'] = array(
            'bold',
            'sup',
            'sub',
            'strikethrough',
            'separator',
            'removeformat',
            'separator',
            'numlist',
            'bullist',
            'separator',
            'formatselect',
            'styleselect'
        );
        $init['theme_advanced_buttons2'] = array(
            'pagebreak',
            'separator',
            'pasteword',
            'separator',
            'image',
            'separator',
            'link',
            'unlink',
            'separator',
            'charmap',
            'separator',
            'code'
        );
        $init['theme_advanced_buttons3'] = array();
    }

    $init = theme_tinymce_theme($init, $textarea_name, $theme_name, $is_running);   
    return $init;
}

Hinweis: Dies ist nur ein kleinerer Ausschnitt aus meinem derzeitigen Code und ich bin nicht ganz sicher, ob die vorletzte Zeile überhaupt nötig ist. Zudem muss natürlich der fettmarkierte Teil des Funktionsnamens dem Ordnernamen des verwendeten Themes entsprechen.

Leider gibt es für das neue API-Modul keinen derartigen Theme-Hook, weswegen ich wieder einmal Big G bemühte.

Die Lösung

In der WYSIWYG-API gibt es den Hook mymodule_wysiwyg_editor_settings_alter, der jedoch erst seit Version 2.1 und nur für Module zur Verfügung steht. Man muss also ein neues Mini-Modul erstellen und in diesem die entsprechenden Einstellungen anpassen. Das Modul könnte dann beispielsweise den nachfolgenden Code enthalten:

function mymodule_wysiwyg_editor_settings_alter(&$settings, &$context) {
  if ($context['profile']->editor == 'ckeditor') {
    $settings['toolbar'] = 'Custom'; // 'Basic', 'Full'
    $settings['toolbar_Custom'] = array(
        array(
            'Bold', 'Strike', '-',
            'Subscript', 'Superscript', '-',
            'NumberedList', 'BulletedList', '-',
            'SelectAll', 'RemoveFormat', '-',
            'Format', 'Styles'
        ),
        '/',
        array(
            'Paste', 'PasteText', 'PasteFromWord', '-',
            'Link', 'Unlink', 'Anchor', '-',
            'Image', 'SpecialChar', 'break', '-',
            'Scayt', '-',
            'Source' 
        )
    );
  }
}

Hinweis: Der Code gehört in ein eigenes kleines Modul und der fettmarkierte Modulname muss natürlich angepasst werden. Zudem muss in den normalen Admin-Einstellungen der WYSIWYG-API unter Schaltflächen und Plugins der Haken bei Endemarkierung für den Anrisstext gesetzt werden, da ich keine andere Möglichkeit gefunden habe, den Drupal Teaser-Break einfach einzubinden.

Fazit

Mir gefällt der CKEDITOR inzwischen ziemlich gut, wobei ich erst sogar über den Editor jwysiwyg nachgedacht habe. Dieser scheint zwar ebenso wie der TinyMCE und der CKEDITOR konfigurierbar zu sein, dies klappt jedoch leider noch nicht über die obige Lösung in der WYSIWYG-API.

Die Umsetzung der Toolbar-Konfiguration in Form eines eigenständigen Moduls ist vermutlich sogar besser als die frühere Theming-Variante, da man nun identische Einstellungen einfach über die Installation des Moduls erreichen kann.

Derzeit bin ich noch am überlegen, welche Bilderverwaltung ich verwenden soll. Bisher habe ich immer IMCE für den TinyMCE benutzt und mit den auf Redpanda beschriebenen Pimp-Möglichkeiten würde mir dieses Modul sogar noch besser gefallen. Ich bin mir jedoch nicht sicher, ob dies beim CKEDITOR wirklich die beste Wahl ist und würde deswegen gerne wissen, was ihr bevorzugt?

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!

t3n Magazin - Jetzt im Abo bestellen