В Drupal 8 каждый контентный элемент, такой как страница или запись блога, представлен с помощью собственного типа материалов. Они определяют структуру и поля содержимого веб-сайта. Но где именно в базе данных Drupal хранятся эти типы материалов? Давайте разберемся.

Таблица ‘node_type’

Одной из основных таблиц, в которой Drupal хранит информацию о типах материалов, является таблица ‘node_type’. В этой таблице содержатся следующие поля:

  • type: машинное имя типа материала
  • name: отображаемое имя типа материала
  • description: описание типа материала
  • help: справка по типу материала
  • module: имя модуля, к которому относится тип материала
  • locked: флаг-индикатор, указывающий, может ли тип материала быть изменен или удален
  • orig_type: имя типа материала до его изменения
  • display_submitted: флаг-индикатор для отображения информации о том, кто создал материал и когда
  • entity_keys: сериализованный массив с ключами сущности, такими как id, bundle, revision

Пример программного кода, позволяющего получить информацию о типах материалов из таблицы ‘node_type’, может выглядеть следующим образом:


  $query = \Drupal::database()->select('node_type', 'nt');
  $query->fields('nt', [
    'type',
    'name',
    'description',
    'module',
    // ...
  ]);
  $results = $query->execute()->fetchAllAssoc('type');

Дополнительные таблицы

Кроме таблицы ‘node_type’, Drupal 8 также использует дополнительные таблицы типов материалов для хранения специфической информации. Некоторые из этих таблиц включают:

  • node_field_data: содержит записи всех материалов, а также их основные данные и поля
  • node_field_revision: содержит историю версий полей для каждого материала
  • node__field_example: таблица для хранения значений конкретного поля (например, field_example) для каждого материала

Дополнительные вопросы и ответы

1. Как добавить новый тип материала в Drupal 8?

Чтобы добавить новый тип материала в Drupal 8, вам необходимо создать соответствующую запись в таблице ‘node_type’. Также потребуется создать соответствующие таблицы для хранения данных и полей этого типа материала.

2. Как изменить существующий тип материала в Drupal 8?

Для изменения существующего типа материала в Drupal 8 вы можете обновить соответствующую запись в таблице ‘node_type’. Однако, учтите, что некоторые изменения, такие как удаление полей, могут быть сложными и потребовать дополнительных манипуляций в базе данных.

3. Как удалить тип материала в Drupal 8?

Для удаления типа материала в Drupal 8 вы должны удалить соответствующую запись в таблице ‘node_type’. Однако, убедитесь, что нет материалов, использующих данный тип, иначе удаление может привести к ошибкам или потере данных. Также не забудьте удалить связанные таблицы для хранения данных этого типа материала.