MODX TinyMCE RTE — настройка визуального редактора

MODX TinyMCE Rich Text Editor MODX Revo

Сегодня урок по текстовому редактору для MODX Revolution — TinyMCE Rich Text Editor, разберемся с тем как его установить, настроить и кастомизировать.

Установка и автонастройка TinyMCE v.4 (RTE 1.4.0)

TinyMCE v.4 это устаревшая версия (с репозитория modx скачивается 5я версия). Рекомендую использовать свежую версию редактора, и настраивать ее руками. Этот так чисто для ленивых метод (пока еще рабочий).

Ручная установка TinyMCE v.4

Скачиваем TinyMCE RTE 1.4.0 со страницы плагина.

скачиваем TinyMCE RTE 1.4.0

Устанавливается пакет в ручную.

Ручная установка пакета

И активируем.

Стандартный внешний вид

После установки визуальный редактор выглядит следующим образом.

Стандартный вид TinyMCE RTE

Для многих достаточно, но можно добавить дополнительный функционал.

Автоматическая настройка + дополнительный функционал и кастомизация

Предостережения автора
Предостережения автора

Скачиваем транспортный пакет с гитхаба или блога и устанавливаем его через Приложения — Установщик — Загрузить пакет.

Загружаем modx пакет локально

После загрузки пакета устанавливаем его.

Установка RTE

опции установки RTE

Я убрал отметку на против TinyMCE Rich Text Editor, т.к. он уже установлен.

Внимание! Не известно как ведет себя транспортный пакет вместе с уже установленными другими визуальными редакторами (кроме ace), так что их лучше удалить.

После успешной установки, будут внесены все настройки и он приобретет следующий вид и будет висеть ошибка «Ошибка при загрузке плагина: typograf из URL https://site.ru/assets/components/tinymcerte/js/vendor/tinymce/plugins/typograf/plugin.min.js.»

Ошибка

У кого не сменился внешний вид редактора, перезапустите установку транспортного пакета, но в этот раз уже не убирайте галку напротив «TinyMCE Rich Text Editor»

Чтобы избавиться от ошибки, нам нужно либо удалить типограф из системной настройки tinymcerte.plugins.

Удаляем типограф

Либо установить его, для этого скачайте типограф, закиньте данный файл в assets/components/tinymcerte/js/vendor/tinymce/plugins и распакуйте его.

распаковываем типограф

После этого, у вас появится дополнительный пункт — типографика.

кастомный TinyMCE RTE + типограф

Спасибо за данный транспортный пакет iWatchYouFromAfar.

Настройка (вставка) своих шаблонов

Шаблоны помогут вам добавлять какие-нибудь часто используемые элементы дизайна.

За них у нас отвечает подключенный конфиг файл assets/components/tinymcerte/tinymcerte/js/external-config.json в нем следующее содержимое:

{
	"templates": [{
		"title": "Some title 1",
		"description": "Some desc 1",
		"content": "My content"
	}, {
		"title": "Some title 2",
		"description": "Some desc 2",
		"url": "../templates/image.html"
	}]
	,
	"codesample_languages": [{
			"text": "HTML/XML", "value": "markup"
		}, {
			"text": "JavaScript", "value": "javascript"
		}, {
			"text": "CSS", "value": "css"
		}, {
			"text": "PHP", "value": "php"
		}, {
			"text": "Ruby", "value": "ruby"
		}, {
			"text": "Python", "value": "python"
		}, {
			"text": "Java", "value": "java"
		}, {
			"text": "C", "value": "c"
		}, {
			"text": "C#", "value": "csharp"
		}, {
			"text": "C++", "value": "cpp"
	}]
,
	"spellchecker_languages": "Russian=ru,Ukrainian=uk,English=en",
	"spellchecker_language": "ru",
	"spellchecker_rpc_url": "//speller.yandex.net/services/tinyspell"
}

Нас интересуют первые строки, давайте создадим свой шаблон, к примеру довольно часто в тексте нужно выделять какие-нибудь элементы, для этого можно использовать элемент bootstrap alert. Создадим его:

  1. Создаем каталог templates в assets/components/tinymcerte
    Создаем каталог templates
  2. Создаем в нем html файл с именем alert и следующим кодом:
    <div class="alert alert-info" role="alert">Замените данный текст</div>

    создаем первый шаблон

  3. Правим external-config.json меняем значения первого шаблона на
    "title": "alert",
    "description": "блок внимания",
    "url": "../assets/components/tinymcerte/templates/alert.html"
  4. Сохраняем и проверяем.
    Вставка шаблонов

У кого в редакторе не раскрашиваются элементы, добавьте CSS для контента.

Добавляем CSS для контента

таким образом вы можете создать кучу различных шаблонов и использовать их.

Установка и ручная настройка актуальной версии TinyMCE v5

Идем в Пакеты — Установщик, на открывшейся странице кликаем по кнопке «Загрузить пакеты».

Загрузка пакетов

На открывшейся странице в поиске вбиваем (или копируем и вставляем): TinyMCE Rich Text Editor и нажимаем Enter. После чего жмем на против нужного пакета кнопку «Загрузить».

Загружаем пакет

После загрузки возвращаемся в Менеджер пакетов и устанавливаем его.

Настройка TinyMCE (RTE)

По умолчанию редактор содержит необходимый функционал, но если вдруг его вам не хватает, то читаем далее.

Активация доп. плагинов

По умолчанию автор пакета TinyMCE Rich Text Editor включил все самое необходимое, но на всякий случай позаботился и о частных случаях включив в компонент дополнительные плагины (41 open source плагина (большая часть их них включена), их описания можно почитать на оф. сайте редактора: tiny.cloud/docs/plugins/opensource/ + парочка адаптированных под MODX плагинов, например: modximage — альтернатива image, modxlink — альтернатива link.

Все плагины физически лежат в assets/components/tinymcerte/js/vendor/tinymce/plugins. Включать и отключать их можно в системной настройке: tinymcerte.plugins. Там перечислены все включенные плагины (туда указываются названия папок с плагинами из …/tinymce/plugins), следовательно если, что-то не нужно можно убрать или наоборот.

К примеру вы хотите создать блок на подобии моего и писать IT статьи с кодом, тогда вы можете включить плагин «codesample» — сейчас включен по умолчанию.

Плагин codesample

в системной настройке tinymcerte.plugins.

Включаем плагин

После чего он появится в панеле редактора (или в каком-то из пунктов).

Панелька плагина в редакторе

Добавить или изменить пример кода

Активации дополнительных плагинов хватит для 80% рядовых пользователей. Для тех, кто установил PageBlock — вообще скорее всего не нужно даже заворачиваться с какими либо настройками!

Включение полных (абсолютных) URL при вставке ссылок

Если вы решились избавиться от тега base или вообще просто хотите чтобы вставлялись (при вставке ссылок, через редактор), ссылки с хостом и т.д., т.е. https://site.ru/name-linc, а не name-linc (как сделано по умолчанию в cms wordpress). Тогда установите следующие настройки:

  • Относительные URL — tinymcerte.relative_urls — Нет.
  • Удалить скрипт хоста — tinymcerte.remove_script_host — Нет.

Подключение файла стилей

Любите пихать целые блоки в редактор и хотите видеть их визуал, тогда подключите основной файл стилей сайта к редактору, в системной настройке CSS для контента (tinymcerte.content_css).

Указываем путь до CSS

Добавление типографа

Скачиваем плагин типографа для TinyMCE 5:

скачать типограф с githab
Скачать типограф с блога

Далее закидываем по ftp, папку с файлами типографа в assets/components/tinymcerte/js/vendor/tinymce/plugins

После чего включаем его в системной настройке tinymcerte.plugins и добавляем его кнопку в системную настройку tinymcerte.toolbar1

Загружаем и включаем типограф

Кнопка типографа в панели тини мсе

Добавление шаблонов

Включаем template в системной настройке tinymcerte.plugins и добавляем его кнопку в системную настройку tinymcerte.toolbar1 . После этого у нас появиться кнопка вставки шаблонов, но если ее нажать вы увидите ошибку.

Вставка шаблонов

Ошибка выходит т.к. у нас просто на просто нет никаких шаблонов, и чтобы добавить их, нам нужно создать и подключить внешний конфиг на json.

Создайте файл external-config.json со следующим содержимым:

{
	"templates": [{
		"title": "Some title 1",
		"description": "Some desc 1",
		"content": "My content"
	}, {
		"title": "Some title 2",
		"description": "Some desc 2",
		"url": "../templates/image.html"
	}]
	,
	"codesample_languages": [{
			"text": "HTML/XML", "value": "markup"
		}, {
			"text": "JavaScript", "value": "javascript"
		}, {
			"text": "CSS", "value": "css"
		}, {
			"text": "PHP", "value": "php"
		}, {
			"text": "Ruby", "value": "ruby"
		}, {
			"text": "Python", "value": "python"
		}, {
			"text": "Java", "value": "java"
		}, {
			"text": "C", "value": "c"
		}, {
			"text": "C#", "value": "csharp"
		}, {
			"text": "C++", "value": "cpp"
	}]
,
	"spellchecker_languages": "Russian=ru,Ukrainian=uk,English=en",
	"spellchecker_language": "ru",
	"spellchecker_rpc_url": "//speller.yandex.net/services/tinyspell"
}

Его мы взяли из старой версии выше) Закидываем файл в assets/components и затем подключаем в системной настройке tinymcerte.external_config.

Подключаем внешний конфиг

Теперь у нас должна ожить кнопка, при нажатии на нее должно выходить такое окно.

Окно вставки шаблонов

Осталось создать шаблоны, как это делать говорилось выше. Ну еще покажу до кучи как добавить шаблон с колонками, например с 3мя.

Разметку кнопки возьмем бутстраповскую, т.к. в рамках уроков я использую шаблон на bootstrap5.

bootstrap 3 col

В директории assets/components/tinymcerte, создаем папку с именем templates (для хранения наших шаблонов).

Создаем каталог

Далее в созданном каталоге, создаем файл tree-colums.html и помещаем в него код указанный ниже и сохраняем.

<div class="container">
  <div class="row">
    <div class="col-sm">
      One of three columns
    </div>
    <div class="col-sm">
      One of three columns
    </div>
    <div class="col-sm">
      One of three columns
    </div>
  </div>
</div>

создаем html шаблон

Далее открываем файл assets/components/external-config.json и правим там строку:

"templates": [{
		"title": "Some title 1",
		"description": "Some desc 1",
		"content": "My content"
	},

Заменяем ее на:

"templates": [{
		"title": "3 колонки",
		"description": "Добавить 3х колончатый блок",
		"url": "../assets/components/tinymcerte/templates/tree-colums.html"
	},

И пробуем добавить его.

пробуем вставить блок

И смотрим что получилось:

Блок вставился

Отлично, давайте заменим в нем содержимое и посмотрим данную страницу.

Меняем содержимое блока

Результат вывода блока

Подробнее про создание шаблонов смотрите в документации.

Подключение визуального текстового редактора в introtext MODX Revolution

Довольно часто при разработке сайта требуется вывести визуальный текстовый редактор в поле introtext, чтобы не плодить отдельные дополнительные поля.

Для этого:

  1. Создаем плагин, с названием introtextRTE и вставляем в него код:
    // Добавить RTE для introtext, если для ресурса включена опция richtext
    // проверяем событие "OnDocFormRender"
    $modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
        if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
    });</script>');

    Создаем плагин introtextRTE

  2. Вешаем его на событие «OnDocFormRender» (ставим галку) и сохраняем.
    включаем системное событие OnDocFormRender

Радуемся визуальному текстовому редактору в introtext (аннотации).

Изменение размера текстового редактора в TV полях.

Если установить текстовый редактор для TV поля, то размер текстовой области достаточно маленький

Стандартный размер текстового редактора в TV

Можно потянуть за нижний правый угол чтобы его увеличить. А можно внести строчку CSS:

.mce-container iframe{min-height:275px}

в файл assets/components/tinymcerte/js/vendor/tinymce/skins/modx/skin.min.css

Добавляем свои стили в tynymce rte

Очищаем кэш и смотрим, поле увеличилось.

Новый размер

Единственное минус данного метода — если обновите пакет, то стили слетят и вам затем заново их нужно будет добавлять. Знаете способ лучше пишите)

TinyMCE и валидация

TinyMCE по умолчанию добавляет закрывающий слэш для многих тегов, например <br />, <img src="путь_до_картинки" alt="альт" width="800" height="400" /> и прочих. Это не является критической ошибкой или предупреждением, однако валидатор на них ругается (инфо предупреждение, типа они больше не нужны и не несут никакой роли).

Так же если в редакторе добавить вывод скриптов и css то он тоже добавит к ним уже не нужные атрибуты: type="text/css" и type="text/javascript".

Причем если зайти в режим просмотра кода, убрать не нужные закрывающиеся теги, редактор все равно их вернет на место.

Для того, чтобы профиксить это, создайте плагин, с именем например tiny_validate, со следующим кодом:

<?php
$arr1 = array('type="text/css"', 'type="text/javascript"',' />','/>');
$arr2 = array('','','>','>');
$output = &$modx->resource->_output;
$output = str_replace($arr1,$arr2,$output);

Повесьте его на событие OnWebPagePrerender и сохраните его.

В следующем уроке создадим страницу контактов.

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 5 оценок, среднее 4.6 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Аноним

    Вы смогли решить эту проблему?

    Ответить
    1. Голягин Алексей

      Следующая версия пакета настраивается подобно — в ручную) Единственное типограф не искал.

      Ответить
  2. Виктор

    Это конечно все хорошо, но при скачивании старой версии TinyMCE RTE в админке пакет называется tinymcerte, а при скачивании пакета с настройками, он называется также, соотвественно тупо не устанавливается!

    Ответить
  3. Евгений

    Здравствуите! Делаю все как и вы но почемуто редактор со стандартного не меняется и нету типографа

    Ответить
    1. Алексей автор

      Здравствуйте. Все эти настройки TinyMCE RTE — для версии которая в себе использует TinyMCE v4 (т.е. для TinyMCE RTE 1.4.0 и ниже), TinyMCE RTE 2.0 и выше (такой скорее всего у Вас) использует TinyMCE v5. TinyMCE RTE 1.4.0 можно скачать здесь https://modx.com/extras/package/tinymcerichtexteditor (и установить вручную)

      Ответить
  4. Александр

    Здравствуйте, Алексей! Спасибо за отличные материалы по MODx! В контексте данной статьи появился вопрос, как в файле конфигурации добавить, например, в блоки тег span (т.е., чтобы наряду с заголовками h1-h6, pre был еще span)?

    В статье Вы обращаетесь к плагину шаблонов через «templates» и далее в фигурных скобках описывается «title», «description», «content». А мне интересно узнать, как обратиться к списку блоков, и какие там нужно прописывать атрибуты? Очень долго Гуглил, но так и не нашёл документацию именно по TinyMCE для MODx и его кастомизацию, поэтому буду благодарен за подсказку в этом вопросе.

    Ответить
  5. Ирина

    Алексей, добрый день! Вопрос, возможно, не совсем в тему, но не нашла информации. Когда мы создаем tv и присваиваем ему параметр ввода «Текстовый редактор», поле для редактирования получается довольно небольшое. Где в настройках можно изменить высоту поля текстового редактора для tv ?
    Собственно, интересует, как увеличить высоту поля https://yadi.sk/i/F_svGUiri7PHkA ?

    Ответить
    1. Алексей автор

      Добрый день — обновил немного урок: добавил в него ответ на ваш вопрос.

      Ответить