Схема работы системы фильтров из книги Pro Drupal development:
А теперь подробнее на примере отображения фильтрованного текста ноды:
-
Пользователь открывает страницу ноды.
-
Нода загружается из базы и её содержимое проходит через функцию
check_markup()
. В качестве одного из параметров присутствует формат ввода, выбранный автором при создании или сохранении ноды. -
Ф-я
check_markup()
по md5 хэшу текста проверяет есть ли в кэше (таблицаcache_filter
) уже отфильтрованный текст и если есть, то возвращает его. -
Если отфильтрованного текста в кэше нет, то загружается список включённых фильтров текущего формата ввода. Фильтры сортируются согласно их весу.
-
Вызывается хук
hook_filter()
с параметромprepare
. На этом этапе каждый включённый фильтр подготавливает текст для дальнейшей обработки. -
Вызывается хук
hook_filter()
с параметромprocess
и текст проходит обработку каждым фильтром (смайлики заменяются на картинки, ссылки оборачиваются в тег<a />
и т.д.). -
Если фильтры позволяют кэшировать результат, то он сохраняется в кэш на 1 день.
-
Отфильтрованный текст выводится пользователю.
Вот так вот всё просто. Не лишним будет почитать описание хука 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.
- Текстовый фильтр, оборачивающий контент ссылок в span
- Дружим Sape и Internal Page Cache (вставка динамического содержимого в закэшированную страницу)
- Плагин блока, генерящий динамический контент с помощью #lazy_builder
- Тюнинг кэширования блоков с формой
- Текстовый фильтр добавляющий внешним ссылкам атрибут rel=nofollow
Комментарии
В настройках в админке друпал 7 ведь есть минимальное и максимальное время кеша. Это не одно и тоже с изменением строки 765?
нет
Настройки кэша в админке влияют только на кэш страниц и кэш блоков. Остальные варианты кэша, в том числе и кэш фильтров, не управляются из админки.
Добавить комментарий