Я понимаю, что плагин для изменения размера работает, если изображение имеет следующие атрибуты:
Итак, что я сделал, я создаю пакетный процесс, просматриваю весь контент и нахожу изображение, а затем на основе изображения загружаю их UUID
и файл заменил его.
что-то вроде следующего кода может помочь людям, у которых есть аналогичные требования:
if (preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $node->body->value, $matches)) {
$URIS = array_unique($matches[1]);
foreach ($URIS как $imgUri) {
$imgUriDecoded = urldecode($imgUri);
$node->body->value = str_replace($imgUri, $imgUriDecoded, $node->body->value);
$fileData = self::getFileDataByUrl($imgUriDecoded);
$fileUuid = "xxx-только для изменения размера";
если ($fileData) {
$fileUuid = $fileData->get('uuid')->значение ?? "xxx-только для изменения размера";
}
// пропустить Danger.jpg
если ($fileUuid == "4f6db862-2c5d-4fb1-8d5b-830b89514af4") {
Продолжить;
}
$replacement = sprintf('<img data-entity-type="file" data-entity-uuid="%s"', $fileUuid);
$node->body->value = str_replace("<img ", $replacement, $node->body->value);
\Drupal::messenger()->addStatus($node->id());
}
}
$ узел-> setSyncing (ИСТИНА);
$узел->сохранить();
}
Следующий файл помогает получить файл по fileURI:
статическая функция getFileDataByUrl($fileURI) {
$file_name = \Drupal::service('file_system')->базовое имя($fileURI);
$target_file = \Drupal::entityTypeManager()
->getStorage('файл')
->loadByProperties(['filename' => $file_name]);
$file_data = сброс($target_file);
если ($file_data) {
возврат ($file_data);
}
еще {
вернуть ЛОЖЬ;
}
}