Open NDruce opened 1 year ago
На сайте почему-то не все изображения переконвертированы
С виду всё в порядке, я так понял что у вас используются модули подмены изображений, в этом месте не может конфликтовать?
Тут 2 варианта: либо регулярка спотыкается либо файла нет в момент подмены, давайте разбираться
ошибка в пути noindex != no_index
/assets/images/_glemping/noindex/intro/intro.jpg
URL-ам изображений добавляется на конце
?[version]
можно добавить в начале функции check_image_file_for_webp_converter $img_real = explode('?', $img_real)[0];
Тут 2 варианта: либо регулярка спотыкается либо файла нет в момент подмены, давайте разбираться
Сделал отладку, все файлы PHP находит:
Значит не справляется регулярка. Понял, в чем дело:
Нужно еще обрабатывать атрибуты href="*.(jpg|jpeg|png)"
и любой src="*.(jpg|jpeg|png)" вне img
, даже если это скажем data-src
.
Главное, чтобы любой атрибут имел .(jpg|jpeg|png)
. Тогда меняем его на +.webp
Но href надо сперва проверять на то, не внешняя ли это ссылка, а только внутренние ссылки на сайте, при том с доменом или без
битый https://glamping42.ru/assets/images/_glemping/noindex/intro/intro.jpg
data-src он и так умеет modx_plugin_webp_converter.php строка 162
можно добавить такую конструкцию на 180 строке: (на скорую руку, не проверял)
preg_match_all('/<a[^>]+>/i', $output, $result);
if(count($result)){ // Search images in a href tag
foreach($result[0] as $img_tag) {
$img_tag= str_replace("'", '"', $img_tag); // src
preg_match('/(href)=("[^"]*")/i', $img_tag, $img[$img_tag]);
$img_real= str_replace('"', '', $img[$img_tag][2]);
check_image_file_for_webp_converter($img_real, $webp_on_page);
}
}
На сайте почему-то не все изображения переконвертированы, хотя все изображения переконвертированы и присутствуют в файловой системе (
/webp/*/*/*.webp
). Посмотрите пожалуйста HTML-код сайта. В чем может быть проблема? Спасибо.И еще некоторые изображения на сайте меняются (заменяются другими), но при этом их названия надо оставить. Для того, чтобы у посетителей сайта они обновлялись в браузерах (в обход уже закэшированых браузерами старых версий), к URL-ам изображений добавляется на конце
?[version]
, например/assets/images/img.jpg?1
. Надо, чтобы плагин умел и их обрабатывать. Для этого надо при получении ссылок на странице (изsrc="..."
иurl(...)
) делать$img_real = explode('?', $img_real)[0];