Drupal 8 предоставляет нам мощный API для создания и управления контентом. Создание node, или узла, программно может быть необходимо во многих случаях, например, при автоматизации процесса добавления контента или при разработке модуля. В этой статье мы рассмотрим как создать node в Drupal 8 с помощью программного кода.

Шаг 1: Подготовка

Перед тем, как создать node, убедитесь, что у вас установлена Drupal 8 и вы имеете административные права.

Шаг 2: Создание node

Для создания node нам понадобится использовать функции API Drupal 8. Вот пример программного кода, который создает новую node типа «article» с указанным заголовком и содержимым:


// Получаем объект менеджера контента.
$entityManager = \Drupal::entityManager();

// Создаем новую node.
$node = $entityManager->getStorage('node')->create([
  'type' => 'article',
  'title' => 'Пример node',
  'body' => [
    'value' => 'Содержимое node',
    'summary' => 'Краткое содержимое node',
    'format' => 'basic_html', // Формат текста
  ],
]);

// Сохраняем node в базу данных.
$node->save();

Теперь у нас есть новая node с заголовком «Пример node» и содержимым «Содержимое node».

Шаг 3: Дополнительные вопросы и ответы

1. Как добавить изображение к созданной node?

Для добавления изображения к созданной node в Drupal 8 необходимо использовать модуль «Media» и следующий код:


// Создаем Media объект для изображения.
$mediaEntity = \Drupal\media_entity\Entity\Media::create([
  'bundle' => 'image', // Тип медиа
  'field_image' => [
    'target_id' => $fileEntity->id(), // ID файла изображения
    'alt' => 'Альтернативный текст',
    'title' => 'Заголовок изображения',
  ],
]);

// Добавляем Media объект к полю изображения в node.
$node->field_image[] = $mediaEntity;
$node->save();

2. Как добавить термины таксономии к созданной node?

Для добавления терминов таксономии к созданной node в Drupal 8, вы можете использовать следующий код:


// Загружаем таксономию по машинному имени.
$taxonomy = \Drupal\taxonomy\Entity\Term::load($termId);

// Добавляем таксономию к полю таксономии в node.
$node->field_taxonomy[] = $taxonomy;
$node->save();

3. Как добавить пользовательское поле к созданной node?

Для добавления пользовательского поля к созданной node в Drupal 8, вы можете использовать следующий код:


// Загружаем поле по машинному имени.
$field = \Drupal\field\Entity\FieldConfig::loadByName('node', 'article', 'field_custom');

// Устанавливаем значение поля для node.
$node->field_custom_number[] = [
  'value' => 'Значение поля',
];
$node->save();

Теперь вы знаете как создать node в Drupal 8 программно. Вы также получили ответы на некоторые дополнительные вопросы по смежным темам. Надеюсь, эта статья была полезной для вас!