Таблица taxonomy_term_field_data
Таблица taxonomy_term_field_data является одной из ключевых таблиц в системе таксономии Drupal. Она предназначена для хранения обработанных и готовых к выводу данных терминов, таких как название и описание, с учетом конкретного языка. Эта таблица автоматически обновляется при изменении терминов и обеспечивает высокую производительность при выборках.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
tid |
int |
Первичный ключ, уникальный идентификатор термина. Ссылается на taxonomy_term_data.tid.
|
vid |
varchar(32) |
Идентификатор словаря (vocabulary), к которому принадлежит термин. Ссылается на taxonomy_vocabulary.vid.
|
langcode |
varchar(12) |
Код языка, для которого представлены данные в этой строке. |
name |
varchar(255) |
Название термина на указанном языке. |
description__value |
longtext |
Основное текстовое описание термина. |
description__format |
varchar(255) |
Идентификатор формата текста (текстовый фильтр), примененного к описанию. Ссылается на filter_format.format.
|
weight |
int |
Вес термина, определяющий порядок его отображения внутри словаря. |
changed |
int |
Метка времени UNIX, указывающая, когда термин был последний раз изменен. |
default_langcode |
int |
Флаг, указывающий, является ли этот язык языком по умолчанию для термина (1 - да, 0 - нет).
|
status |
int |
Статус термина: 1 - опубликован, 0 - не опубликован.
|
Как это работает
Drupal использует таблицу taxonomy_term_field_data для эффективного хранения и извлечения данных терминов, которые прошли через процесс рендеринга и готовы к отображению на сайте. Когда термин создается или редактируется, его данные обрабатываются (например, применяются текстовые фильтры к описанию) и затем сохраняются в эту таблицу.
Структура таблицы оптимизирована для многоязычных сайтов. Для каждого термина может существовать несколько записей с одинаковым tid, но разными langcode. Это позволяет хранить переводы названия и описания термина для разных языков в одной таблице, что значительно ускоряет выполнение запросов при построении меню, фильтров и других элементов интерфейса.
Поле status позволяет управлять видимостью термина. Термины со статусом 0 не будут отображаться на сайте для обычных пользователей. Поле weight используется для сортировки терминов при выводе, например, в выпадающих списках или меню.
Важно отметить, что эта таблица является производной. Основные данные термина хранятся в taxonomy_term_data, а данные полей, добавленных через модуль Field, хранятся в отдельных таблицах (например, taxonomy_term__body).
Пример SQL-запроса
Выбрать все опубликованные термины из словаря "tags" на русском языке:
SELECT tfd.tid, tfd.name, tfd.description__value
FROM taxonomy_term_field_data tfd
WHERE tfd.vid = 'tags'
AND tfd.langcode = 'ru'
AND tfd.status = 1
ORDER BY tfd.weight ASC, tfd.name ASC;
Смотрите также
-
таблицу
taxonomy_term_data,
которая хранит базовые данные терминов таксономии -
таблицу
taxonomy_index,
которая связывает термины с материалами (нодами) -
таблицу
taxonomy_vocabulary,
которая хранит информацию о словарях таксономии -
таблицу
node_field_data,
которая хранит данные материалов (нод) для отображения