Таблица filter_format
Таблица filter_format является центральной для системы фильтрации текста в Drupal. Она хранит конфигурацию текстовых форматов, которые представляют собой наборы фильтров (например, преобразование URL в ссылки, ограничение HTML-тегов, применение PHP-кода), применяемых к пользовательскому тексту в определенном порядке.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
format |
varchar(255) |
Машинное имя формата. Уникальный идентификатор, используемый для ссылки на формат в коде и других таблицах. |
name |
varchar(255) |
Человекочитаемое название формата (например, "Полный HTML", "Ограниченный HTML", "Обычный текст"). |
cache |
tinyint |
Флаг, указывающий, следует ли кэшировать отфильтрованный текст для этого формата. Значение 1 означает, что кэширование включено, 0 - выключено. Кэширование значительно ускоряет работу, но его следует отключать для форматов с динамическим контентом (например, с PHP-фильтром).
|
status |
tinyint |
Статус формата. Значение 1 означает, что формат активен и доступен для использования, 0 - формат отключен.
|
weight |
int |
Вес формата. Определяет порядок, в котором форматы появляются в списках выбора (например, в селекте поля тела материала). Меньшие значения поднимаются вверх. |
Как это работает
Текстовые форматы являются фундаментальным механизмом контроля над пользовательским вводом в Drupal. Каждому формату в таблице filter_format соответствует набор фильтров, который хранится в связанной таблице filter. Каждый фильтр в наборе выполняется последовательно, в порядке, определяемом его весом, над исходным текстом для получения итогового HTML.
Когда пользователь сохраняет текст, выбрав определенный текстовый формат, сам формат (его машинное имя) сохраняется вместе с текстом. При последующем выводе этого текста система загружает конфигурацию формата из таблицы filter_format и применяет к тексту все активные фильтры, связанные с этим форматом.
Поле cache играет важную роль в производительности. Если кэширование включено, результат фильтрации сохраняется в кэше, и при последующих запросах отфильтрованный текст берется оттуда, минуя ресурсоемкий процесс применения всех фильтров. Форматы, которые включают динамические фильтры (например, PHP-код), должны иметь отключенное кэширование, так как их вывод может меняться от запроса к запросу.
Права доступа к форматам настраиваются через систему ролей и разрешений Drupal. Пользовательская роль должна иметь разрешение "Use the [название формата] text format" для того, чтобы выбрать этот формат при редактировании контента.
Пример SQL-запроса
Получить список всех активных форматов, отсортированных по весу, можно следующим запросом:
SELECT format, name, weight
FROM filter_format
WHERE status = 1
ORDER BY weight ASC;
Смотрите также
-
таблицу
filter,
которая хранит конфигурацию отдельных фильтров для каждого формата -
таблицу
node,
которая хранит основные данные материалов (нод) -
таблицу
node_revision,
которая хранит ревизии материалов -
таблицу
node_field_data,
которая хранит данные полей материалов