чи можна додати спеціальний формат до параметра формату на текстовій панелі?


16

У текстовому редакторі, де можна встановити заголовки та інші налаштування, чи можна додати власні стилі, якими користуються клієнти? і навіть видалити непотрібні?


2
WP3 і TinyMCE так заплутані в цьому аспекті. Я не можу повірити, що неможливо легко додати або налаштувати прокляті формати, як це є у CKEditor.
cherouvim

1
Я згоден, це тотальний біль.
Легкий фузз

Відповіді:


17

«Класичний» редактор TinyMCE має два випадають: formatselectдля стилів абзаців і styleselectдля символьних стилів - які також можуть містити стилі абзацу, щоб зробити його більш заплутаним. Конфігурація в WordPress за замовчуванням показує лише формат, що випадає. Якщо ви застосуєте до редактора користувальницьку таблицю стилів, TinyMCE може використовувати її для підбору назв класів та додавання їх до випадаючого стилю - але це не працювало щоразу для мене.

З 3.0 ви можете зателефонувати add_editor_style()у свій файл, functions.phpщоб додати таблицю стилів до редактора. За замовчуванням він знаходиться editor-style.cssу вашому каталозі тем. Перед 3.0 вам потрібно зачепитись у mce_cssфільтр, щоб додати URL до таблиці стилів редактора. Це в кінцевому підсумку в на content_cssзначення конфігурації TinyMCE .

Щоб додати спадне меню стилю , styleselectпараметр повинен з'явитися в одному з масивів конфігурації рядка кнопок ( theme_advanced_buttons[1-4]у TinyMCE, відфільтрований mce_buttons_[1-4]у WordPress). Список форматів блоків управляється з theme_advanced_blockformatsможливістю TinyMCE , який можна додати в масив управління в tiny_mce_before_initфільтрі. Якщо ви хочете налаштувати імена стилю списку ( а не тільки ваші імена класів CSS), дивіться на в theme_advanced_stylesопції . Ви також можете скористатися більш досконалим style_formatsваріантом, який надає більше гнучкості у визначенні стилів.

Відповідний PHP - код з усією конфігурацією гачків і по замовчуванням знаходиться в wp-admin/includes/post.php, в функціїwp_tiny_mce() . Усе разом ваше налаштування могло виглядати так:

add_action( 'after_setup_theme', 'wpse3882_after_setup_theme' );
function wpse3882_after_setup_theme()
{
    add_editor_style();
}

add_filter('mce_buttons_2', 'wpse3882_mce_buttons_2');
function wpse3882_mce_buttons_2($buttons)
{
    array_unshift($buttons, 'styleselect');
    return $buttons;
}

add_filter('tiny_mce_before_init', 'wpse3882_tiny_mce_before_init');
function wpse3882_tiny_mce_before_init($settings)
{
    $settings['theme_advanced_blockformats'] = 'p,h1,h2,h3,h4';

    // From http://tinymce.moxiecode.com/examples/example_24.php
    $style_formats = array(
        array('title' => 'Bold text', 'inline' => 'b'),
        array('title' => 'Red text', 'inline' => 'span', 'styles' => array('color' => '#ff0000')),
        array('title' => 'Red header', 'block' => 'h1', 'styles' => array('color' => '#ff0000')),
        array('title' => 'Example 1', 'inline' => 'span', 'classes' => 'example1'),
        array('title' => 'Example 2', 'inline' => 'span', 'classes' => 'example2'),
        array('title' => 'Table styles'),
        array('title' => 'Table row 1', 'selector' => 'tr', 'classes' => 'tablerow1'),
    );
    // Before 3.1 you needed a special trick to send this array to the configuration.
    // See this post history for previous versions.
    $settings['style_formats'] = json_encode( $style_formats );

    return $settings;
}

чи є спеціальний формат, який слід взяти .css, використовуючи add_editor_style? ніби нічого не трапляється
Легкий фуз

1
@Mild Fuzz: Раніше моя відповідь була оманливою, оскільки WordPress показує лише одну з двох необхідних спадок. Я оновив свою відповідь способом додати друге спадне меню та як ним керувати.
Ян Фабрі

1
@Mild Fuzz: Параметри для різних style_formatsелементів пояснюються на відповідній formatsсторінці вікі.
Ян Фабрі

1
жоден longr не видає помилок, але не має ефекту!
Легкий фузз

1
json_encode генерує ", а не", тому javascript зламається. Вам потрібно зробити str_replace ('"'," '", json_encode ($ style_formats))
cherouvim

0

Відповідно до цього випадаючого меню формату TinyMCE більше не відображається попередній перегляд стилів

Кара знав це правильно, вам потрібно скасувати стилі за замовчуванням, щоб побачити нові стилі ...

unset($init['preview_styles']);

return $settings;

Будь ласка, додайте ще детальну інформацію, наприклад, не ясно, що $settingsтут. Спасибі
birgire
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.