it-swarm.com.de

Gibt es eine Möglichkeit, der tinyMCE-Spültischumschaltung eine weitere Zeile hinzuzufügen?

Der tinyMCE "kitchen sink" -Knopf zeigt/versteckt eine Reihe von Knöpfen. Ich habe meine Reihe mit Kurzwahltasten erfolgreich zum tinyMCE-Editor hinzugefügt, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, meine Reihe nur dann anzuzeigen, wenn auf die Spültaste geklickt wird. Ich möchte die Knöpfe nicht direkt in die Küchenspülenreihe einfügen, da ich viele Knöpfe habe, die eine eigene Reihe benötigen. Kann ich die Spültaste so einstellen, dass zwei Zeilen statt einer angezeigt werden? Oder gibt es eine Art Modifikator, wenn ich meine Zeile hinzufüge, um anzuzeigen, dass sie umgeschaltet werden soll, wenn auf die Spültaste geklickt wird?

Hier ist der Code, mit dem ich meine dritte Reihe von Schaltflächen hinzufüge:

    // add shortcode buttons to the tinyMCE editor row 3
function add_button_3() {
   if ( current_user_can('edit_posts') &&  current_user_can('edit_pages') )
   {
     add_filter('mce_external_plugins', 'add_plugin_3');
     add_filter('mce_buttons_3', 'register_button_3');
   }
}
//setup array of shortcode buttons to add
function register_button_3($buttons) {
   array_Push($buttons, "dropcap", "divider", "quote", "pullquoteleft", "pullquoteright", "boxdark", "boxlight", "togglesimple", "togglebox", "tabs", "signoff", "columns", "smallbuttons", "largebuttons", "lists");  
   return $buttons;
}
//setup array for tinyMCE editor interface
function add_plugin_3($plugin_array) {
   $plugin_array['lists'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['signoff'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['dropcap'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['divider'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['quote'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['pullquoteleft'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['pullquoteright'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['boxdark'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['boxlight'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['togglesimple'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['togglebox'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['tabs'] = get_bloginfo('template_url').'/js/customcodes.js'; 
   $plugin_array['columns'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['smallbuttons'] = get_bloginfo('template_url').'/js/customcodes.js';
   $plugin_array['largebuttons'] = get_bloginfo('template_url').'/js/customcodes.js';
   return $plugin_array;
}
add_action('init', 'add_button_3'); // add the add_button function to the page init

Die hinzugefügte Zeile wird jedoch nicht durch die Spültaste umgeschaltet.

5

Ja!

  • Verwenden Sie den Filter mce_buttons_2, um Schaltflächen zur Zeile second hinzuzufügen.
  • Verwenden Sie den mce_buttons_3-Filter, um der dritten -Zeile Schaltflächen hinzuzufügen.

Hier ist ein Beispiel für das, was ich benutze:

function mytheme_mce_buttons_row_3($buttons) {

     $buttons[] = 'fontselect';
     $buttons[] = 'fontsizeselect';
     $buttons[] = 'code';
     $buttons[] = 'sup';
     $buttons[] = 'sub';
     $buttons[] = 'backcolor';
     $buttons[] = 'separator';
     $buttons[] = 'hr';
     $buttons[] = 'wp_page';

     return $buttons;

}
add_filter("mce_buttons_3", "mytheme_mce_buttons_row_3");

Lass dies einfach in functions.php fallen. (Ich habe es in meine Theme-Setup-Funktion eingefügt, die in after_setup_theme eingebunden wird.)

BEARBEITEN:

Ich weiß nicht, ob es einen Unterschied macht oder nicht, aber Sie verwenden array_Push($buttons, $button), während ich $buttons[] = $button verwende.

Hier ist dein Code:

//setup array of shortcode buttons to add
function register_button_3($buttons) {
   array_Push($buttons, "dropcap");
   array_Push($buttons, "divider");
   array_Push($buttons, "quote");
   array_Push($buttons, "pullquoteleft");
   array_Push($buttons, "pullquoteright");
   array_Push($buttons, "boxdark");
   array_Push($buttons, "boxlight");
   array_Push($buttons, "togglesimple");
   array_Push($buttons, "togglebox");
   array_Push($buttons, "tabs");
   array_Push($buttons, "signoff"); 
   array_Push($buttons, "columns");
   array_Push($buttons, "smallbuttons");
   array_Push($buttons, "largebuttons");
   array_Push($buttons, "lists");     
   return $buttons;
}
add_filter('mce_buttons_3', 'register_button_3');

Was nach meiner Methode so aussehen würde:

//setup array of shortcode buttons to add
function register_button_3($buttons) {
   $buttons[] = 'dropcap';
   $buttons[] = 'divider';
   $buttons[] = 'quote';
   $buttons[] = 'pullquoteleft';
   $buttons[] = 'pullquoteright';
   $buttons[] = 'boxdark';
   $buttons[] = 'boxlight';
   $buttons[] = 'togglesimple';
   $buttons[] = 'togglebox';
   $buttons[] = 'tabs';
   $buttons[] = 'signoff'; 
   $buttons[] = 'columns';
   $buttons[] = 'smallbuttons';
   $buttons[] = 'largebuttons';
   $buttons[] = 'lists';     
   return $buttons;
}
add_filter('mce_buttons_3', 'register_button_3');

Probieren Sie das aus?

2
Chip Bennett

Ich bin auf dasselbe Problem gestoßen, und nach ein wenig jQuery-Arbeit konnte ich eine Lösung finden.

Ich habe meine Antwort auf das Toggle-Problem in einem Blog-Post geschrieben.

Das JavaScript, das Sie für Ihr Editor-Plugin benötigen, sieht folgendermaßen aus:

 init: function (ed, url) {
 ed.onInit.add (function (ed) {
 if (getUserSetting ('hidetb', '0') == ' 0 ') {
 JQuery (' # content_toolbar3 ') .hide (); 
} 
 
 JQuery (' # wp-content-editor-container #content_wp_adv ') .click (function () {
 if (jQuery (' # content_toolbar2 ') .is (': visible ')) {
 jQuery (' # content_toolbar3 ') .show (); 
} else {
 jQuery ('# content_toolbar3') .hide (); 
} 
}); 
}); 
} 

Ich hoffe das hilft allen anderen, die auf diesen Thread gestoßen sind!

2
Andy Adams

Ich dachte immer, dass die Schaltfläche "Kitchen Sink" im MCE-Editor in Wordpress nicht richtig funktioniert. Ich habe die Antwort von @AndyAdamns gesehen und sie erweitert, um auch Folgendes zu behandeln:

  1. umschalten aller Zeilen, die der Zeile folgen, mit der Spültaste
  2. die Spültaste kann auch in Reihe 2 oder 3 aktiviert werden

Hier ist das Javascript, um dies als MCE-Plugin zu implementieren:

(function(){
    tinymce.create( "tinymce.plugins.extrarows", {init : function( a, b ){
        a.onInit.add( function( a ){
            var $btns = jQuery( '.mce_wp_adv.mceButtonEnabled' )

            // This function attempts to update mceButtonActive class on the 
            //   kitchen sink button appropriately, but .mceButtonActive seems to 
            //   be manipulated between user clicks by another script, so uses 
            //   custom class 'pfxMceButtonActive' to actually track toggle state. 
            function toggleFollowingRows( $el ){
                var $this = jQuery( $el );
                if( $this.hasClass( 'pfxMceButtonActive' ) ){
                    $this.removeClass( 'mceButtonActive pfxMceButtonActive' ).closest( '.mceToolbar' ).find( '~ .mceToolbar' ).hide();
                    setUserSetting( 'hidetb', 1 );
                } else {
                    $this.addClass( 'mceButtonActive pfxMceButtonActive' ).removeClass( 'mceButtonInactive' ).closest( '.mceToolbar' ).find( '~ .mceToolbar' ).show();
                    setUserSetting( 'hidetb', 0 );
                }
            }

            // Show rows based on local setting (Hide by default)
            var hidetb = getUserSetting( 'hidetb', 1 );
            if( hidetb && hidetb != '0' ){
                $btns.addClass( 'mceButtonActive pfxMceButtonActive' )
            }

            $btns.click( function( e ){
                toggleFollowingRows( jQuery( this ) );
                return false;
            } ).each( function(){
                toggleFollowingRows( jQuery( this ) );
            } )
        } );
    }, 
    getInfo : function(){
        return{longname : "Hide Extra Rows", author : "smhmic", authorurl : "http://smhmic.com", version : tinymce.majorVersion + "." + tinymce.minorVersion }
    }} );
    tinymce.PluginManager.add( "extrarows", tinymce.plugins.extrarows )
})();

... dann binde diese Datei in Wordpress ein:

add_filter( 'mce_external_plugins', 'mce_extrarows_plugin' );
function mce_extrarows_plugin( $plugins_array ){
    $plugins_array['extrarows'] = /* PATH TO JAVASCRIPT FILE */;
    return $plugins_array;
}

Dieses Plugin behebt auch andere kleinere Probleme, die ich bei der Verwendung von MCE in Wordpress hatte:

  • deaktivieren des Ein/Aus-Zustands für die Spültaste (ohne dieses Plugin erschien die Taste immer im ausgeschalteten Zustand initialisiert)
  • beständiger Kitchen Sink-Umschaltstatus (ohne dieses Plug-in wurde das Laden von Seiten manchmal nicht fortgesetzt)
0