Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

Drupal

Типографический фильтр

Как уже сообщалось, был разработан модуль с фильтром типографического толку. Модуль называется 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() теперь вторым параметром принимают массив включенных опций фильтрации;
 — в код функции добавлены соответствующие условные операторы.

Инсталляция модуля

  1. Для начала убедитесь, что у вас именно drupal 6.
  2. Скачайте исходники модуля и залейте в директорию sites/all/modules (относительно корня вашего сайта).
  3. На странице admin/build/modules активируйте модуль typofilter.
  4. Настройте опции фильтрации и добавьте сейф-блоки на странице admin/settings/typofilter.
  5. На странице admin/settings/filters разрешите фильтр в нужных форматах ввода.
  6. Если вы используете фильтр для формата «Filtered HTML», убедитесь, что используемые сейф-блоки разрешены.
  7. Если вы используете фильтр для оформления красивых листингов программ, например, GeSHi, убедитесь, что Typofilter имеет меньший вес. И не забудьте добавить теги фильтра в сейф-блоки.

Модуль носит версию 0.6, потому что некоторые вещи можно сделать более гибким и изящным способом. Также правильным тоном было бы сделать все интерфейсные элементы англоязычными, использовать функцию t() и приложить файл перевода. Но я пока использую все как есть, а дальше видно будет. Если кто хочет взять и изменить — очень хорошо.

Архив с модулем.
typofilter 0.5 (предыдущая версия).

Также прошу обратить внимание на скрипт Typofilter.js, интегрирующийся в WYSIWYG-редакторы и типографирующий текст прямо в браузере, без отправки на сервер.

Комментарии