---
title: 'Типографический фильтр'
url: 'https://graker.ru/news/2009/06/08/typofilter'
language: ru
type: post
author: 'Роман Грачев'
published: '2009-06-08T21:46:22+04:00'
updated: '2011-02-03T22:49:00+03:00'
categories:
  - Программирование
  - Разработка
  - Друпальчики
---

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

Как уже сообщалось, был разработан модуль с фильтром типографического толку. Модуль называется **typofilter** и вводит одноименный фильтр в систему фильтрации содержимого [Drupal 6](http://drupal.org). В качестве типографического движка используется несколько измененный «[Типограф](http://rmcreative.ru/blog/post/tipograf)». Модуль я назвал 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](http://qbnz.com/highlighter/), убедитесь, что Typofilter имеет меньший вес. И не забудьте добавить теги фильтра в сейф-блоки.

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

**[Архив с модулем](https://graker.ru/sites/default/files/legacy/typofilter.zip)**.
[typofilter 0.5](https://graker.ru/sites/default/files/legacy/typofilter.0.5.zip) (предыдущая версия).

Также прошу обратить внимание на скрипт **[Typofilter.js](https://graker.ru/project/typofilter_js)**, интегрирующийся в WYSIWYG-редакторы и типографирующий текст прямо в браузере, без отправки на сервер.
