На сервере должны быть включены или imagick. Качаем либу отсюда В .htaccess сайта добавляем: AddType image/webp .webp Делаем плагин с событием OnWebPagePrerender {ignore}
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $notSupportDevice = array('iphone', 'ipod', 'ipad','macintosh','mac os','Edge','MSIE'); foreach ($notSupportDevice as $val) { if(stripos($userAgent, $val) !== false) return; } require $modx->config['base_path'].'/assets/vendor/autoload.php'; use WebPConvert\WebPConvert; $content = $modx->Event->params['documentOutput']; $content = &$modx->resource->_output; //Для Revolution раскомментируйте эту строку и первую. $imgs = array(); preg_match_all('/]+>/i',$content, $result); if (count($result)) { foreach($result[0] as $img_tag) { preg_match('/(src)=("[^"]*")/i',$img_tag, $img[$img_tag]); $img_real = str_replace('"','',$img[$img_tag][2]); $img_real = str_replace('./','',$img_real); if ((strpos($img_real, '.jpg')!==false) or (strpos($img_real, '.jpeg')!==false) or (strpos($img_real, '.png')!==false)) $imgs[] = $img_real; } $imgs = array_unique($imgs); foreach($imgs as $img_real) { if(($img_real) && (file_exists($modx->config['base_path'].$img_real))) { if (!file_exists($modx->config['base_path'].$img_real.'.webp')) { $image = $modx->config['base_path'].$img_real; $destination = $modx->config['base_path'].$img_real.'.webp'; if (WebPConvert::convert($image, $destination)) $i = $img_real.'.webp'; else $i = $img_real; } else $i = $img_real.'.webp'; $content = str_replace($img_real, $i, $content); } } } $modx->Event->output($content);Взято с https://modx.ru/novosti-i-stati/article/442/