НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
112 of 182 menu

Таблица system

Таблица system служит реестром всех расширений ядра Drupal. В ней содержится критически важная информация о состоянии, версиях, зависимостях и расположении каждого модуля, темы и профиля. Эта таблица активно используется системой при включении/отключении модулей, обновлении системы, проверке зависимостей и построении маршрутизации.

Поля

Поле Тип данных Описание
filename varchar(255) Путь к основному файлу модуля, темы или профиля относительно корня установки Drupal (например, modules/node/node.module). Является первичным ключом таблицы.
name varchar(255) Машинное имя расширения. Должно совпадать с именем, указанным в файле .info.yml.
type varchar(12) Тип записи. Может принимать значения: module (модуль), theme (тема оформления), profile (профиль установки).
owner varchar(255) Путь к корневой директории расширения относительно корня Drupal (например, modules/node). Для тем это путь к папке темы.
status int Текущий статус расширения: 0 - отключено, 1 - включено. Для модулей ядра Drupal всегда 1.
bootstrap int Указывает, что модуль должен быть загружен на ранней стадии bootstrap процесса Drupal (значение 1). Такие модули критически важны для работы системы (например, system, database).
schema_version int Текущая версия схемы базы данных для данного модуля. Используется системой обновлений Drupal для отслеживания и применения хуков hook_update_N().
weight int Вес модуля, влияющий на порядок его загрузки и выполнения хуков. Модули с меньшим весом загружаются раньше.
info blob Сериализованный массив с содержимым файла MODULE.info.yml. Содержит метаданные: имя, описание, зависимости, версию и другую информацию о расширении.

Как это работает

При первой установке Drupal или при очистке кеша система сканирует директории modules, themes и profiles в поисках файлов *.info.yml. Найденная информация парсится и записывается в таблицу system. Этот процесс известен как "обнаружение расширений" (extension discovery).

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

Поле schema_version является ключевым для системы обновлений. Когда разработчик модуля добавляет новый хук обновления (например, hook_update_8001()), система сравнивает текущее значение schema_version с доступными обновлениями и применяет необходимые, последовательно увеличивая номер версии.

Порядок загрузки модулей определяется полями weight и bootstrap. Сначала загружаются bootstrap-модули, затем все остальные, отсортированные по весу. Это важно для разрешения зависимостей между модулями.

Пример SQL-запроса

Получить список всех включенных модулей с их версиями можно следующим запросом:

SELECT name, filename, info FROM system WHERE type = 'module' AND status = 1 ORDER BY weight ASC, name ASC;

Просмотреть информацию о необходимых обновлениях для модулей:

SELECT name, schema_version, filename FROM system WHERE type = 'module' AND schema_version > 0;

Смотрите также

  • таблицу cache,
    которая отвечает за кеширование данных
  • таблицу key_value,
    которая хранит произвольные пары ключ-значение
  • таблицу sequences,
    которая управляет автоинкрементными идентификаторами
  • таблицу semaphore,
    которая управляет блокировками для предотвращения race condition
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить