Таблица filter
Таблица filter является ключевой частью системы текстовых форматов и фильтров в Drupal. Она определяет, какие именно фильтры (например, преобразование строк в ссылки, фильтрация HTML-кода, применение PHP-кода) активны для каждого текстового формата, а также хранит их индивидуальные настройки и порядок (вес) применения.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
format |
varchar(255) |
Машинное имя текстового формата, к которому применяется данный фильтр. Внешний ключ для таблицы filter_format.
|
module |
varchar(64) |
Имя модуля, который предоставляет данный фильтр (например, filter, php).
|
name |
varchar(32) |
Машинное имя самого фильтра (например, filter_url, filter_html, php_code).
|
weight |
int |
Целое число, определяющее порядок применения фильтров внутри одного формата. Фильтры применяются от меньшего веса к большему. |
status |
int |
Статус фильтра: 0 - отключен, 1 - включен для данного формата.
|
settings |
blob |
Настройки фильтра, сериализованные в бинарный формат. Могут содержать различные параметры, например, список разрешенных HTML-тегов для фильтра filter_html.
|
Как это работает
Администратор сайта настраивает текстовые форматы (например, "Полный HTML", "Ограниченный HTML", "Обычный текст") на странице /admin/config/content/formats. Для каждого формата выбирается набор фильтров, которые будут обрабатывать пользовательский текст в этом формате.
Каждый раз, когда администратор добавляет фильтр к формату, меняет его порядок, включает/отключает или изменяет его настройки (например, список разрешенных тегов), в таблицу filter записывается или обновляется соответствующая запись. Поле format связывает эту конфигурацию с конкретным текстовым форматом, а комбинация полей module и name идентифицирует сам фильтр.
Когда пользователь сохраняет текст, выбрав определенный формат, система фильтров Drupal загружает все активные (status = 1) фильтры для этого формата, сортирует их по полю weight и последовательно применяет к тексту. Настройки каждого фильтра предварительно десериализуются из поля settings.
При отображении ранее сохраненного текста обработка фильтрами обычно не применяется повторно, так как результат фильтрации часто сохраняется в кэше. Однако если текст хранится в исходном виде (как, например, в нодах), фильтры применяются при каждом выводе на экран.
Пример SQL-запроса
Посмотреть все активные фильтры для формата "full_html", отсортированные по весу, можно следующим запросом:
SELECT f.name, f.module, f.weight, f.settings
FROM filter f
WHERE f.format = 'full_html' AND f.status = 1
ORDER BY f.weight ASC;
Смотрите также
-
таблицу
filter_format,
которая хранит основные настройки текстовых форматов -
таблицу
cache_filter,
которая хранит кэшированный результат обработки текста фильтрами -
таблицу
node,
которая хранит материалы (ноды), чье тело часто обрабатывается фильтрами -
таблицу
comment,
которая хранит комментарии, также проходящие через систему фильтров