Проверка правописания в редакторе TinyMCE с Яндекс.Спеллер

archive view archive save

tinymce-300x156 В визуальном редакторе TinyMCE стандартной комплектации есть плагин spellchecker. Однако, кроме его активации ещё требуется скрипт-обработчик со словарями которых может заменить Яндекс.Спеллер.

Яндекс.Спеллер - это веб-сервис проверки правописания, который предоставляет веб-разработчикам возможность использовать на страницах своих веб-сайтов интерактивную проверку орфографии текста с помощью API (Application Programming Interface).

Подключение Яндекс.Спеллер к текстовым редакторам довольно подробно описано на сайте сего сервиса. Так например для подключение Яндекс.Спеллер к WordPress-у достаточно поставить один из плагинов "Q2W3 Yandex Speller" или "Yandex Speller Application". Однако для подключения Яндекс.Спеллер-а к Drupal или Joomla! придется "колупать" файлы движка.

Подключение Яндекс.Спеллер к Joomla!

На сайте веб-сервиса подключать Яндекс.Спеллер к Joomla! предлагается через компонент JCE путём дополнительной заливки так званых патчей (изменённых файлов JCE). Однако автор сего поста почему-то не любит редактор JCE и предпочитает TinyMCE (без JCE ;).

Для подключения Яндекс.Спеллер-а к визуальному редактору TinyMCE на сайте веб-сервиса есть страница с соответствующими инструкциями, которые здесь мы полностью переписывать не будем, а сразу дадим практические и пошаговые рекомендации по подключению Яндекс.Спеллер-а к TinyMCE 4 в движке Joomla! 3.х.

ШАГ 1

Открываем "Расширения - Менеджер плагинов", находим там "Редактор - TinyMCE" и открываем его настройки, где на вкладке "Плагин" выбираем "Режим редактора: Расширенный", переходим на вкладку "Дополнительные параметры" где в полях "Специальный плагин" и "Специальная кнопка" вписываем "spellchecker" нажимаем "Сохранить" - это подключит плагин из директории /media/editors/tinymce/plugins/spellchecker/.

tinymce-spellchecker-in-joomla3

ШАГ 2

Открываем файл /plugins/editors/tinymce/tinymce.php, в котором находим строку "case 2: /* Extended mode*/" (где-то 72х строка) и в "tinyMCE.init({...});" секции (пофиг где, вначале, в средине, в конце) добавляем две строки:

<script type="text/javascript">
  tinymce.init({
    ...,
    // Spellchecker
    spellchecker_languages: "Russian=ru,Ukrainian=uk,English=en",
    spellchecker_rpc_url: "http://speller.yandex.net/services/tinyspell",
    ...,
  });
</script>

Вот собственно и всё. На данный момент Яндекс.Спеллер поддерживает проверку правописания только на трёх языках (Russian, Ukrainian, English) указанных "spellchecker_languages: ...". "spellchecker_rpc_url: ..." переадресует запросы с нашего сайта к Яндекс.Спеллер.

Теперь можно попробовать создать статью в визуальном редакторе TinyMCE намеренно создав несколько ошибок, после нажать на значок "ABC" проверки правописания и проверить работает ли Яндекс.Спеллер:

tinymce-spellchecker-with-yandex

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

В некоторых случаях фокус может не получится и при попытке проверить правописание экран затянет белой пеленой и проверка зависнет, после чего придется перезагружать страницу. Если так случилось, тогда первым делом нужно проверить разрешено ли выполнение JavsScript с сайта yandex.net, после в браузере откроем "Инструменты - Веб-разработка - Веб-консоль" и повторим попытку проверить правописание, в результате чего можем получить ошибку JavsScript: Заблокирована загрузка смешанного активного содержимого "http://speller.yandex.net/services/tinyspell".

В таком случае нужно строку spellchecker_rpc_url: "http://speller.yandex.net/services/tinyspell" изменить на spellchecker_rpc_url: "https://speller.yandex.net/services/tinyspell", а если на этом этапе у нас ничерта не заработало, тогда читаем дальше...

ШАГ 3

"Чтобы спеллер работал со всеми браузерами – потребуется переадресовать запросы спеллера сначала на ваш сайт, а потом – с вашего сайта на Яндекс.", - как бы намекает, что прямая переадресация на "https://speller.yandex.net/services/tinyspell" может работать не во всех браузерах.

Первым вариантом переадресации предлагается указать в spellchecker_rpc_url: "/speller/tinyspell", а после выполнять скрытое перенаправление директивой "ProxyPass /speller/tinyspell http://speller.yandex.net/services/tinyspell" модуля mod_proxy. Однако данный случай требует физического доступа к конфигурационным файлам Apache ибо ProxyPass может быть использована исключительно только в "server config, virtual host, directory" - этот геморрой нам не катит.

Второй вариант использовать серверные скрипты из архива server-scripts.zip, в котором должны быть файлы: tinyspell.ashx, tinyspell.php, tinyspell.pl, tinyspell.py.

Выбираем скрипт под используемый на сайте язык программирования и указываем относительный путь к нему в spellchecker_rpc_url. Из вышеперечисленного был испробован tinyspell.php, который себя не оправдал, проверка заканчивалась ошибкой плагина "Server response wasn't proper JSON.".

Проблемы?

Server response wasn't proper JSON.

При использовании в директиве spellchecker_rpc_url скрипта tinyspell.php из server-scripts.zip возвращалась ошибка плагина "Server response wasn't proper JSON.", т.е. сервер вернул некорректные JSON данные - причиной тому корявый tinyspell.php. Доделанный tinyspell.php берём ниже:

 

The spelling service was not found: (https://speller.yandex.net/services/tinyspell)

Причиной ошибки "The spelling service was not found: (https://speller.yandex.net/services/tinyspell)" по всей видимости является то, что по некоторым данным Киев захватили фашисты на летающих тарелках:

 которые то и издали указ о блокировке российских сайтов и соцсетей, под санкции которого попал и Яндекс, а посему есесно и доступ к http://speller.yandex.net/services/tinyspell обломился. Однако понять логики по блокировке российских соцсетей, как и логики использования соц. сетей как таковых независимо от страны происхождения, автору сего поста не под силу.

Все усилия цензоров и деспотов заблокировать анонимусу доступ к каим-то веб-сайтам в сети Интернет являются пустой тратой времени ИМХО! Дабы обойти блокировки мы можем использовать TOR сервер установленный где-то в границах доступа, и, уже через него выполнять запросы к speller.yandex.net, для чего разумеется нужно допилить скрипт tinyspell.php из server-scripts.zip соответствующим образом.  Либо загрузить его на сайт/сервер своего знакомого, например, который размещён не в Украине, после чего изменить УРЛ к скрипту в директиве spellchecker_rpc_url.


Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме