Drupal → Как работает система фильтров

10.02.2011

Схема работы системы фильтров из книги Pro Drupal development:

Схема работы фильтра

А теперь подробнее на примере отображения фильтрованного текста ноды:

  1. Пользователь открывает страницу ноды.

  2. Нода загружается из базы и её содержимое проходит через функцию check_markup(). В качестве одного из параметров присутствует формат ввода, выбранный автором при создании или сохранении ноды.

  3. Ф-я check_markup() по md5 хэшу текста проверяет есть ли в кэше (таблица cache_filter) уже отфильтрованный текст и если есть, то возвращает его.

  4. Если отфильтрованного текста в кэше нет, то загружается список включённых фильтров текущего формата ввода. Фильтры сортируются согласно их весу.

  5. Вызывается хук hook_filter() с параметром prepare. На этом этапе каждый включённый фильтр подготавливает текст для дальнейшей обработки.

  6. Вызывается хук hook_filter() с параметром process и текст проходит обработку каждым фильтром (смайлики заменяются на картинки, ссылки оборачиваются в тег <a /> и т.д.).

  7. Если фильтры позволяют кэшировать результат, то он сохраняется в кэш на 1 день.

  8. Отфильтрованный текст выводится пользователю.

Вот так вот всё просто. Не лишним будет почитать описание хука hook_filter().

Кстати! Если контент на сайте изменяется редко, то можно увеличить время хранения отфильтрованного текста в кэше например дней до 30 (зачем каждый день производить одни и те же манипуляции?!). Для этого нужно в файле modules/filter/filter.module, в строчке 460, заменить:

cache_set($cache_id, $text, 'cache_filter', time() + (60 * 60 * 24));

на

cache_set($cache_id, $text, 'cache_filter', time() + (60 * 60 * 24 * 30));

В семёрке это строчка 765.

Написанное актуально для
Drupal 6
Похожие записи

Комментарии

Гость
10.03.2011, 06:35

В настройках в админке друпал 7 ведь есть минимальное и максимальное время кеша. Это не одно и тоже с изменением строки 765?

wdtime.ru
28.05.2015, 12:51

Настройки кэша в админке влияют только на кэш страниц и кэш блоков. Остальные варианты кэша, в том числе и кэш фильтров, не управляются из админки.

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