Îmi dau seama că pluginul de redimensionare funcționează dacă imaginea are următoarele atribute:
Așa că, ceea ce am făcut, creez un proces în lot și trec prin tot conținutul și găsesc imaginea, apoi pe baza imaginii le încărc uuid
și fișierul l-a înlocuit.
ceva de genul următor cod poate ajuta oamenii care au cerințe similare:
if (preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $node->body->value, $match)) {
$URIS = array_unique($potriviri[1]);
foreach ($URIS ca $imgUri) {
$imgUriDecoded = urldecode($imgUri);
$nod->body->value = str_replace($imgUri, $imgUriDecoded, $node->body->value);
$fileData = self::getFileDataByUrl($imgUriDecoded);
$fileUuid = "xxx-doar-pentru-redimensionare";
dacă ($fileData) {
$fileUuid = $fileData->get('uuid')->value ?? „xxx-doar-pentru-redimensionare”;
}
// sări peste pericol.jpg
dacă ($fileUuid == "4f6db862-2c5d-4fb1-8d5b-830b89514af4") {
continua;
}
$inlocuire = sprintf('<img data-entity-type="file" data-entity-uuid="%s"', $fileUuid);
$nod->corp->valoare = str_replace("<img ", $inlocuire, $nod->corp->valoare);
\Drupal::messenger()->addStatus($node->id());
}
}
$node->setSyncing(TRUE);
$nod->salvare();
}
Următorul fișier ajută la obținerea fișierului după fileURI:
funcția statică getFileDataByUrl($fileURI) {
$file_name = \Drupal::service('file_system')->basename($fileURI);
$target_file = \Drupal::entityTypeManager()
->getStorage('fișier')
->loadByProperties(['filename' => $file_name]);
$file_data = resetare($target_file);
dacă ($fișier_date) {
return ($fișier_date);
}
else {
returnează FALSE;
}
}