Nu știu despre niciun plugin pentru acest caz.
Dar tu poti scrieți pluginul dvs. personalizat.
În pluginul personalizat, va trebui să analizați textul printr-o expresie obișnuită și să creați manual entități media YouTube din acesta.
Iată câteva exemple de cod pentru a vă îndruma către direcția corectă.
Pluginul pentru procesul de migrare va analiza textul și va procesa părțile încorporate:
<?php
spațiu de nume Drupal\my_migrate\Plugin\migrate\process;
utilizați Drupal\migrate\ProcessPluginBase;
utilizați Drupal\migrate\MigrateExecutableInterface;
utilizați Drupal\migrate\Row;
clasa BodyText extinde ProcessPluginBase {
Transformare funcție publică ($valoare, MigrateExecutableInterface $migrate_executable, Rând $rând, $proprietate_destinație) {
$corp = '';
if (preg_match_all('/[embed](.*)[/embed]/Usi', $text, $match)) {
$text_parts = preg_split('/[embed](.*)[/embed]/Usi', $text);
$body = $text_parts[0];
unset($text_parts[0]);
$text_parts = array_values($text_parts);
foreach ($text_parts ca $key => $text_part) {
if (isset($match[1][$key])) {
$embed = $match[1][$key];
dacă (!$text) {
$this->addTag(MigrationTags::TAG_MISSING_QUOTE);
}
$body .= $this->createYoutubeEmbed($embed);
}
$body .= $text_part;
}
}
returnează $corp;
}
funcția protejată createYoutubeEmbed($embed) {
}
}
În createYoutubeEmbed
metoda de care va trebui
- Creați o entitate media YouTube folosind adresa URL.
- Generați încorporare media. Pentru a vă da seama cum ar trebui să arate conținutul media YouTube, creați manual un conținut în Drupal și vedeți codul sursă în CKEditor.
Acesta este un exemplu de încorporare a imaginii media pe care l-am implementat în migrarea mea:
funcția protejată createMediaImageEmbed(MediaInterface $media, $align = '', $display = 'mare', $link = NULL) {
$atribute = [
'data-embed-button' => $media->bundle(),
'data-entity-embed-display' => 'view_mode:media.' . $display,
'data-align' => $align,
'data-entity-type' => 'media',
'data-entity-uuid' => $media->uuid(),
'data-langcode' => 'de',
];
dacă ($link) {
$link = str_inlocuire("/", "\/", $link);
$attributes['data-entity-embed-display-settings'] = '{"link_url":"' . $link . „\/","link_url_target":0}”;
}
$embed = '<entitate-drupal';
foreach ($atribute ca $cheie => $valoare) {
$embed .= " $key=\"$valoare\"";
}
$embed .= '></drupal-entity>';
returnează $embed;
}