tiny_mce_before_init
フィルタフックを使ってTinyMCEエディタにいくつかのカスタムスタイルを追加しました。それらはブロックレベルの要素にクラスを追加することによって動作します。以下のコードを見てください。
function byron_mce_before_init($settings) {
$style_formats = [
[
'title' => 'Lead',
'block' => 'p',
'classes' => 'lead',
],
[
'title' => 'Tagline',
'block' => 'h5',
'classes' => 'tagline',
],
];
$settings['style_formats'] = json_encode($style_formats);
return $settings;
}
add_filter('tiny_mce_before_init', 'byron_mce_before_init');
私が抱えている問題は、上で定義されたスタイルを切り替えるときにクラスが削除されないことです。代わりに、新しいクラスは古いクラスに置き換えられますが、置き換えられます。スタイルを切り替えるときに古いクラスを削除する方法を理解できないようです。任意の助けは大歓迎です。
質問がcommunity.tinymce.comで尋ねられたようであり、答えはここにあります: https://community.tinymce.com/communityQuestion?id=90661000000IiyjAAC
定義したスタイルで以前のクラスを削除することはできませんが、ドロップダウンリストからスタイルを選択して再度適用すると、そのクラスがタグから削除されます。 。ドロップダウンリストから別のスタイルを選択すると、そのスタイルに関連するクラスがタグに追加されます。
私は同様の問題を抱えていた
doNotRemoveFormat = falseとします。
tinymce.init({
style_formats: [
{title: 'Footer - 11px', inline: 'span', classes: 'admin-footer'},
{title: 'Standard - 14px', inline: 'span'},
{title: 'Heading 1 - 19px', inline: 'span', classes: 'admin-heading-1'},
{title: 'Heading 2 - 22px', inline: 'span', classes: 'admin-heading-2'}
],
setup: function (ed) {
ed.on('ExecCommand', function checkListNodes (evt) {
if (cmd === 'mceToggleFormat') {
if(!doNotRemoveFormat) {
let val = 'runThis|' + evt.value;
this.execCommand('RemoveFormat', false, val);
} else {
doNotRemoveFormat = false;
}
} else if (cmd === 'RemoveFormat') {
let value = evt.value.split("|");
if(value[0] === 'runThis') {
doNotRemoveFormat = true;
this.execCommand('mceToggleFormat', false, value[1])
}
});