24
ПОД НУЖДЫ КЛИЕНТА АДАПТАЦИЯ TINYMCE РЕДАКТОРА

Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

Embed Size (px)

Citation preview

Page 1: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

ПОД НУЖДЫ КЛИЕНТААДАПТАЦИЯ TINYMCE РЕДАКТОРА

Page 2: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

ЕСЛИ У ПОЛЬЗОВАТЕЛЯ ЕСТЬ ВОЗМОЖНОСТЬ ЧТО-ТО СЛОМАТЬ - ОН ОБЯЗАТЕЛЬНО ЭТО СДЕЛАЕТ

Автор неизвестен

TEXT

Page 3: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

TINYMCE

Page 4: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_action('tiny_mce_before_init', function ($settings, $editor_id) { if ($editor_id == 'content' && get_post_type() == 'post') { // customize layout of buttons in editor $settings['toolbar1'] = 'bold,italic,underline,|,link,unlink, |,bullist,numlist,|,alignleft,aligncenter,alignright,alignjustify, |,undo,redo'; $settings['toolbar2'] = ''; $settings['toolbar3'] = ''; $settings['toolbar4'] = ''; } return $settings; }, 999, 2);

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ / УДАЛЯЕМ КНОПКИ

Page 5: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_action('tiny_mce_before_init', function ($settings, $editor_id) { if ($editor_id == 'content' && get_post_type() == 'post') { // customize layout of buttons in editor $settings['toolbar1'] = 'bold,italic,underline,|,link,unlink, |,bullist,numlist,|,alignleft,aligncenter,alignright,alignjustify, |,undo,redo'; $settings['toolbar2'] = ''; $settings['toolbar3'] = ''; $settings['toolbar4'] = ''; } return $settings; }, 999, 2);

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ / УДАЛЯЕМ КНОПКИ

Page 6: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('wp_editor_settings', function ($settings, $editor_id) { if ($editor_id == 'content' && get_post_type() == 'post') { // remove "text" tab from editor $settings['quicktags'] = false; } return $settings; }, 999, 2);

КАСТОМИЗАЦИЯ TINYMCE

УБИРАЕМ QUICKTAGS

Page 7: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('wp_editor_settings', function ($settings, $editor_id) { if ($editor_id == 'content' && get_post_type() == 'post') { // remove "text" tab from editor $settings['quicktags'] = false; } return $settings; }, 999, 2);

КАСТОМИЗАЦИЯ TINYMCE

УБИРАЕМ QUICKTAGS

Page 8: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_action('tiny_mce_before_init', function ($settings) { $settings['block_formats'] = "Paragraph=p;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6"; return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ОТКЛЮЧАЕМ НЕНУЖНЫЕ ФОРМАТЫ

Page 9: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_action('tiny_mce_before_init', function ($settings) { $settings['block_formats'] = "Paragraph=p;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6"; return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ОТКЛЮЧАЕМ НЕНУЖНЫЕ ФОРМАТЫ

Page 10: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('tiny_mce_before_init', function ($settings) { $style = " p { color: red; } a:visited { color: green; } "; $style = trim(preg_replace('/\s+/', ' ', $style)); $settings['content_style'] = $style; return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ INLINE CSS

Page 11: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('tiny_mce_before_init', function ($settings) { $style = " p { color: red; } a:visited { color: green; } "; $style = trim(preg_replace('/\s+/', ' ', $style)); $settings['content_style'] = $style; return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ INLINE CSS

Page 12: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('tiny_mce_before_init', function ($settings) { $style_formats = [ ['title' => 'Large Paragraph', 'selector' => 'p', 'classes' => 'large-paragraph'], ['title' => 'Anchor', 'block' => 'h4', 'classes' => 'anchor-target'], ]; $settings['style_formats'] = json_encode($style_formats); $settings['verify_html'] = false; $settings['toolbar2'] = 'formatselect,styleselect';

return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ СВОИ ФОРМАТЫ

Page 13: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter('tiny_mce_before_init', function ($settings) { $style_formats = [ ['title' => 'Large Paragraph', 'selector' => 'p', 'classes' => 'large-paragraph'], ['title' => 'Anchor', 'block' => 'h4', 'classes' => 'anchor-target'], ]; $settings['style_formats'] = json_encode($style_formats); $settings['verify_html'] = false; $settings['toolbar2'] = 'formatselect,styleselect';

return $settings; });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ СВОИ ФОРМАТЫ

Page 14: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter("mce_external_plugins", function ($plugins) { $plugins['large_header'] = get_template_directory_uri() . '/js/large_header.js'; return $plugins; }); add_filter('mce_buttons_3', function ($buttons) { $buttons[] = 'large_header'; return $buttons; });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ КНОПКУ ФОРМАТИРОВАНИЯ

Page 15: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter("mce_external_plugins", function ($plugins) { $plugins['large_header'] = get_template_directory_uri() . '/js/large_header.js'; return $plugins; }); add_filter('mce_buttons_3', function ($buttons) { $buttons[] = 'large_header'; return $buttons; });

tinymce.PluginManager.add('large_header', function (editor) { var large_header; editor.addButton('large_header', { text: 'Large header', onPostRender: function () { large_header = this; }, onclick: function () { editor.execCommand('FormatBlock', false, 'h2'); editor.dom.addClass(editor.selection.getNode(), 'large-header'); this.active(true); } }); editor.on('NodeChange', function (event) { var node = event.element; if(node.nodeName === 'H2' && editor.dom.hasClass(node,'large-header')){ large_header.active(true); } else { large_header.active(false); } }); });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ КНОПКУ ФОРМАТИРОВАНИЯ

Page 16: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

add_filter("mce_external_plugins", function ($plugins) { $plugins['large_header'] = get_template_directory_uri() . '/js/large_header.js'; return $plugins; }); add_filter('mce_buttons_3', function ($buttons) { $buttons[] = 'large_header'; return $buttons; });

tinymce.PluginManager.add('large_header', function (editor) { var large_header; editor.addButton('large_header', { text: 'Large header', onPostRender: function () { large_header = this; }, onclick: function () { editor.execCommand('FormatBlock', false, 'h2'); editor.dom.addClass(editor.selection.getNode(), 'large-header'); this.active(true); } }); editor.on('NodeChange', function (event) { var node = event.element; if(node.nodeName === 'H2' && editor.dom.hasClass(node,'large-header')){ large_header.active(true); } else { large_header.active(false); } }); });

КАСТОМИЗАЦИЯ TINYMCE

ДОБАВЛЯЕМ КНОПКУ ФОРМАТИРОВАНИЯ

Page 17: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

HIGHCHARTS

Page 18: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

РЕГИСТРИРУЕМ СВОЙ OEMBED

$format = '#https?://cloud\.highcharts\.com/(charts|show|inject)/.*#i'; $provider = get_rest_url() . 'oembed/1.0/highcharts'; wp_oembed_add_provider($format, $provider, true);

КАСТОМИЗАЦИЯ TINYMCE

Page 19: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

РЕГИСТРИРУЕМ СВОЙ OEMBED

$format = '#https?://cloud\.highcharts\.com/(charts|show|inject)/.*#i'; $provider = get_rest_url() . 'oembed/1.0/highcharts'; wp_oembed_add_provider($format, $provider, true);

register_rest_route('oembed/1.0', '/highcharts', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => function ($request) { preg_match("/.*(inject|show|charts)\\/(([^\\/.]*).*)/", $request['url'], $matches); $_embed = $matches[2]; $_id = $matches[3]; $response = array( 'html' => "<div class=\"content-chart-container\" id='highcharts-{$_id}'><script src='//cloud.highcharts.com/inject/{$_embed}' defer='defer'></script></div>", ); return $response; }, 'args' => [ 'url' => [ 'required' => true, ], ], ), ));

КАСТОМИЗАЦИЯ TINYMCE

Page 20: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

РЕГИСТРИРУЕМ СВОЙ OEMBED

$format = '#https?://cloud\.highcharts\.com/(charts|show|inject)/.*#i'; $provider = get_rest_url() . 'oembed/1.0/highcharts'; wp_oembed_add_provider($format, $provider, true);

register_rest_route('oembed/1.0', '/highcharts', array( array( 'methods' => \WP_REST_Server::READABLE, 'callback' => function ($request) { preg_match("/.*(inject|show|charts)\\/(([^\\/.]*).*)/", $request['url'], $matches); $_embed = $matches[2]; $_id = $matches[3]; $response = array( 'html' => "<div class=\"content-chart-container\" id='highcharts-{$_id}'><script src='//cloud.highcharts.com/inject/{$_embed}' defer='defer'></script></div>", ); return $response; }, 'args' => [ 'url' => [ 'required' => true, ], ], ), ));

КАСТОМИЗАЦИЯ TINYMCE

Page 21: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

НЕСТАНДАРТНЫЙ ПРИМЕР

Page 22: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev
Page 23: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev
Page 24: Адаптация TInyMCE редактора под нужды клиента by Vitaly Nikolaev

СПАСИБО▸ Source -

http://tinyurl.com/wpeditorcustom

▸ Githubhttps://github.com/TrilipuT

▸ Redink Githubhttps://github.com/redink-no