Я не знаю о каких-либо плагинах для этого случая.
Но вы можете написать свой собственный плагин.
В пользовательском плагине вам нужно будет анализировать текст с помощью регулярного выражения и создавать из него медиаобъекты youtube вручную.
Вот несколько примеров кода, которые укажут вам правильное направление.
Плагин процесса миграции будет анализировать текст и обрабатывать встраиваемые части:
<?php
пространство имен Drupal\my_migrate\Plugin\migrate\process;
используйте Drupal\migrate\ProcessPluginBase;
используйте Drupal\migrate\MigrateExecutableInterface;
используйте Drupal\migrate\Row;
/**
* Предоставляет подключаемый модуль процесса переноса основного текста.
*
* @MigrateProcessPlugin(
* id = "тело_текст"
* )
*/
класс BodyText расширяет ProcessPluginBase {
/**
* {@inheritdoc}
*/
общедоступная функция преобразования ($ значение, MigrateExecutableInterface $ migrate_executable, строка $ строка, $ destination_property) {
$тело = '';
if (preg_match_all('/[embed](.*)[/embed]/Usi', $text, $matches)) {
// Части текста, разделенные вставками.
$text_parts = preg_split('/[embed](.*)[/embed]/Usi', $text);
$тело = $text_parts[0];
сбросить ($ text_parts [0]);
$text_parts = array_values($text_parts);
// Зацикливаем текстовые части, создаем вставки мультимедиа.
foreach ($text_parts как $key => $text_part) {
если (isset($matches[1][$key])) {
$embed = $matches[1][$key];
если (!$текст) {
$this->addTag(MigrationTags::TAG_MISSING_QUOTE);
}
$body .= $this->createYoutubeEmbed($embed);
}
$тело .= $text_part;
}
}
вернуть $тело;
}
защищенная функция createYoutubeEmbed($embed) {
// 1. Создайте медиа-объект YouTube, используя URL-адрес.
// 2. Создать медиа-вставку.
}
}
в создатьYoutubeВставить
метод, который вам понадобится
- Создайте медиа-объект YouTube, используя URL-адрес.
- Создать вставку мультимедиа. Чтобы выяснить, как должно выглядеть встраивание медиафайлов YouTube, создайте некоторый контент в Drupal вручную и просмотрите исходный код в CKEditor.
Это пример встраивания медиа-изображения, который я реализовал в своей миграции:
/**
* Создает вставку медиа-изображения для текстовых абзацев.
*
* @param \Drupal\media\MediaInterface $медиа
* Образ СМИ.
* @param строка $align
* (опционально) Выравнивание изображения, допустимые значения: слева, справа, по центру.
* @param строка $display
* (опционально) Вариант отображения изображения. Допустимые значения: большой (по умолчанию),
* средний, маленький.
* @param строка $ссылка
* (необязательно) URL ссылки.
*
* @возвратная строка
* Код для вставки.
*/
защищенная функция createMediaImageEmbed(MediaInterface $media, $align = '', $display = 'large', $link = NULL) {
$ атрибуты = [
'data-embed-button' => $media->bundle(),
'data-entity-embed-display' => 'view_mode:media.' . $ дисплей,
'выравнивание данных' => $ выравнивание,
'data-entity-type' => 'носитель',
'data-entity-uuid' => $media->uuid(),
'data-langcode' => 'de',
];
если ($ссылка) {
$link = str_replace("/", "\/", $link);
$attributes['data-entity-embed-display-settings'] = '{"link_url":"' . $ ссылка . '\/","link_url_target":0}';
}
$embed = '<сущность drupal';
foreach ($ атрибуты как $ ключ => $ значение) {
$embed .= "$key=\"$value\"";
}
$embed .= '></drupal-entity>';
вернуть $ вставить;
}