Adăugare clasă CSS pentru link în editorul TinyMCE

7 nov. 2014, 01:39:26
Vizualizări: 28.4K
Voturi: 9

În căutarea unei soluții, am găsit plugin-ul care permite o listă dropdown cu stiluri CSS deja existente într-un stylesheet. Ceea ce doresc este să permit editorului să adauge clase CSS dintr-o casetă de text. Deci, dacă te uiți la această imagine:

Exemplu fereastră inserare link TinyMCE

Ceea ce caut în mod ideal este o modalitate de a obține o altă casetă de text sub Titlu numită Clasă. Libertatea de a introduce o clasă CSS este necesară pentru alte funcționalități din cadrul site-ului. Aveți idei cum pot realiza acest lucru?

Mulțumesc mult!

0
Toate răspunsurile la întrebare 2
5
22

O opțiune este de a adăuga o clasă la meniul Styleselect în MCE. Adaptat de pe pagina Codex "TinyMCE Custom Styles", mai întâi trebuie să adăugați selecția de stil în editor:

// Funcție callback pentru a insera 'styleselect' în array-ul $buttons
function my_mce_buttons_2( $buttons ) {
    array_unshift( $buttons, 'styleselect' );
    return $buttons;
}
// Înregistrăm funcția callback la filtrul corespunzător
add_filter('mce_buttons_2', 'my_mce_buttons_2');

Aceasta va adăuga un nou meniu drop-down în editor. Apoi vă creați stilurile personalizate:

// Funcție callback pentru a filtra setările MCE
function my_mce_before_init_insert_formats( $init_array ) {  
    // Definim array-ul style_formats
    $style_formats = array(  
        // Fiecare element al array-ului este un format cu propriile setări
        array(  
            'title' => 'Clasa Mea Personalizată pentru Link',  
            'selector' => 'a',  
            'classes' => 'my-custom-link-class'             
        )
    );  
    // Introducem array-ul, CODAT JSON, în 'style_formats'
    $init_array['style_formats'] = json_encode( $style_formats );  

    return $init_array;  

} 
// Atasăm funcția callback la 'tiny_mce_before_init' 
add_filter( 'tiny_mce_before_init', 'my_mce_before_init_insert_formats' );

Începând cu WordPress 3.9, care a inclus o actualizare la TinyMCE 4.0, selecția de stil este mult mai robustă și include această regulă selector care înseamnă că puteți defini stiluri care se aplică doar link-urilor. Este destul de util.

Această soluție înseamnă că puteți pre-defini clasele de care aveți nevoie și vă asigurați că nu există greșeli de tastare sau alte probleme.

Așa cum notează Codex, aceasta este cel mai bine combinată cu un fișier editor-style.css bun care va aplica stilurile direct în editor.

7 nov. 2014 17:43:19
Comentarii

Salut mrwweb. Mulțumesc pentru răspuns, deși nu este exact ceea ce căutam. Nu intenționez să selectez o clasă dintr-o listă predefinită de clase. În schimb, am nevoie doar să permit editorului să introducă manual un nume de clasă. Practic, am folosit plugin-ul Lime Modal de la CodeCanyon, iar acesta necesită ca link-ul trigger să utilizeze un nume de clasă identic cu numele unic al modal-ului.

maGz maGz
9 nov. 2014 00:57:29

Acest lucru este foarte interesant, îmi place această metodă, dar există vreo posibilitate de a adăuga noua opțiune împreună cu celelalte elemente din meniul derulant (adică paragraf, heading 1, etc.).

JacobTheDev JacobTheDev
2 dec. 2014 22:10:39

Nu sunt sigur, @rev. Un lucru care îmi place este că această strategie permite în general separarea elementelor HTML semantice de stilurile CSS bazate pe clase (care, sperăm, rămân tot semantice). Nu am timp să verific acum, dar încearcă să folosești var_dump() pe $init_array de mai sus și vezi ce conține. Reține că actualizarea la TinyMCE 4.0 în WordPress 3.9 a invalidat multe tutoriale și documentații existente. Verifică datele când cercetezi.

mrwweb mrwweb
3 dec. 2014 00:34:42

Ah, înțeleg beneficiul păstrării lor separate. Doar că ezit puțin să adaug un meniu derulant întreg doar pentru a adăuga o singură clasă nouă, haha. O să analizez sugestia ta, mulțumesc.

JacobTheDev JacobTheDev
3 dec. 2014 00:41:57

Te înțeleg. Când fac asta elimin formatselect și trec complet la styleselect pentru toate elementele de bloc și stilurile de text.

mrwweb mrwweb
3 dec. 2014 02:27:48
2

Am reușit să rezolv această problemă adăugând plugin-ul WP Edit pe site-ul meu. Acesta are un buton Advanced Link, care îmi permite (sau unui editor) să introduc manual un nume de clasă.

10 nov. 2014 02:03:02
Comentarii

Developerul WP Edit aici. Mulțumesc că ai menționat că ți-a fost de folos pluginul. Te rog să mă anunți dacă ai întrebări legate de utilizare.

josh josh
10 nov. 2014 02:13:01

Hei, mulțumesc Josh! Tocmai am început să-l folosesc, așa că te voi anunța. Până acum, totul merge bine!

maGz maGz
10 nov. 2014 02:16:13