Как уже сообщалось, был разработан модуль с фильтром типографического толку. Модуль называется typofilter и вводит одноименный фильтр в систему фильтрации содержимого Drupal 6. В качестве типографического движка используется несколько измененный «Типограф». Модуль я назвал Lite-версией, поскольку в нем меньше типографических правил, чем в оригинале. Текущая версия модуля — 0.6. Ниже приводится краткое описание сделанного.
Модуль не создает новых таблиц в БД, но вводит две переменные (для хранения опций фильтрации и пользовательских сейф-блоков). Работает все в UTF-8. Для работы в CP1251 нужно однократно конвертнуть файлы модуля в эту кодировку с помощью iconv или других известных вам способов.
Настройка модуля осуществляется со страницы админки (admin/settings/typofilter).
Пользователь может изменять (вкл./выкл.) опции фильтрации и добавлять безопасные блоки, внутри которых фильтр работать не будет. Блоки следует добавлять аналогично перечисленным на странице админки встроенным блокам, т.е. с использованием регулярных выражений, если они требуются.
Опции фильтрации:
— замена (c) на ©;
— замена (r) на ®;
— замена (tm) на ™;
— замена нескольких точек на многоточия;
— замена +- на ±;
— исправление кавычек;
— исправление вложенных кавычек;
— исправление тире;
— короткое тире в числовых диапазонах;
— удаление пробелов между числом и знаком процента.
Движок типографа подключается отдельным файлом typofilter.engine.inc (включен в архив).
Изменения в исходниках движка:
— файл переконвертирован в UTF-8, соответственно, изменено выражение для слов ($word=…), удален параметр кодировки и ликвидированы вызовы iconv;
— класс типографа переименован в Typographus_Lite_UTF8;
— к дефолтным сейф-блокам добавлен вымышленный тег для явного указания выключения фильтрации в блоке;
— заполненный массив дефолтных сейф-блоков вынесен за пределы класса, в классе оставлен пустой по-умолчанию массив, заполняемый при вызове;
— из фильтрации удалены все правила кроме перечисленных в опциях выше;
— функции process() и typo_text() теперь вторым параметром принимают массив включенных опций фильтрации;
— в код функции добавлены соответствующие условные операторы.
Инсталляция модуля
- Для начала убедитесь, что у вас именно drupal 6.
- Скачайте исходники модуля и залейте в директорию sites/all/modules (относительно корня вашего сайта).
- На странице admin/build/modules активируйте модуль typofilter.
- Настройте опции фильтрации и добавьте сейф-блоки на странице admin/settings/typofilter.
- На странице admin/settings/filters разрешите фильтр в нужных форматах ввода.
- Если вы используете фильтр для формата «Filtered HTML», убедитесь, что используемые сейф-блоки разрешены.
- Если вы используете фильтр для оформления красивых листингов программ, например, GeSHi, убедитесь, что Typofilter имеет меньший вес. И не забудьте добавить теги фильтра в сейф-блоки.
Модуль носит версию 0.6, потому что некоторые вещи можно сделать более гибким и изящным способом. Также правильным тоном было бы сделать все интерфейсные элементы англоязычными, использовать функцию t() и приложить файл перевода. Но я пока использую все как есть, а дальше видно будет. Если кто хочет взять и изменить — очень хорошо.
Архив с модулем.
typofilter 0.5 (предыдущая версия).
Также прошу обратить внимание на скрипт Typofilter.js, интегрирующийся в WYSIWYG-редакторы и типографирующий текст прямо в браузере, без отправки на сервер.