ฉันพบว่าปลั๊กอิน resizer ใช้งานได้หากรูปภาพมีแอตทริบิวต์ต่อไปนี้:
สิ่งที่ฉันทำ ฉันสร้างกระบวนการแบทช์และค้นหาเนื้อหาทั้งหมดและค้นหารูปภาพ จากนั้นอิงตามรูปภาพที่ฉันโหลด ยูอิด
และไฟล์แทนที่
บางอย่างเช่นรหัสต่อไปนี้อาจช่วยผู้ที่มีความต้องการคล้ายกัน:
ถ้า (preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $node->body->value, $match)) {
$URIS = array_unique($ตรงกัน[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());
}
}
$node->setSyncing(จริง);
$node->save();
}
ไฟล์ต่อไปนี้ช่วยในการรับไฟล์โดย fileURI:
ฟังก์ชันคงที่ getFileDataByUrl($fileURI) {
$file_name = \Drupal::service('file_system')->ชื่อฐาน($fileURI);
$target_file = \Drupal::entityTypeManager()
->getStorage('ไฟล์')
->loadByProperties(['ชื่อไฟล์' => $file_name]);
$file_data = รีเซ็ต ($target_file);
ถ้า ($file_data) {
กลับ ($ file_data);
}
อื่น {
กลับ FALSE;
}
}