Перейти к содержанию

v1.1.3 обновление от 12-Сен-2023


ab.support.serhii

Рекомендуемые сообщения

  • Администраторы
Post #16846 Опубликовано

@Maksim при случае проверим, может Apple снова что-то начудила в очередных обновлениях. И можем ли мы что-то сделать в модуле.

Пока что как вариант просто всё конвертировать в webp стандартным методом, без модуля.

Спойлер

2026_09_01_8084301646.thumb.jpg.86342b33676af5006565f689a39caa91.jpg

Всё равно динозавров девайсов/браузеров без поддержки webp осталось мизерное количество.

  • OK 1
Post #16855 Опубликовано

@ab.support.serhii

app/addons/ab__webp/func.php - строки 269–274
 

if (!defined('AB__WEBP_DEFAULT_QUANTITY')
    && SiteArea::isStorefront(AREA)
    && ((isset($_SERVER['HTTP_ACCEPT'])
         && strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false)
        || isset(Tygh::$app['session']['ab__webp']))
) {

 

Аддон включается, если в Accept есть image/webp или если флаг уже стоит в сессии. Safari в запросе страницы заголовок image/webp не присылает — его Accept для документа выглядит так: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 — поэтому не срабатывает ни одна ветка.

Post #16856 Опубликовано

Вот такое может быть решение.

Заменить это:
 

function fn_ab__webp_before_dispatch()
{
if (!defined('AB__WEBP_DEFAULT_QUANTITY')
&& SiteArea::isStorefront(AREA)
&& ((isset($_SERVER['HTTP_ACCEPT'])
&& strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false)
|| isset(Tygh::$app['session']['ab__webp']))
) {


На это:
 

function fn_ab__webp_ua_supports_webp()
{
if (empty($_SERVER['HTTP_USER_AGENT'])) {
return false;
}
$ua = $_SERVER['HTTP_USER_AGENT'];
if (strpos($ua, 'AppleWebKit') === false) {
return false;
}
// Safari на macOS и iOS: токен Version/NN. WebP поддерживается с Safari 14.
if (preg_match('~Version/(\d+)[\d.]*\s+(?:Mobile/\S+\s+)?Safari/~', $ua, $m)) {
return (int) $m[1] >= 14;
}
// Chrome, Firefox, Edge на iOS: свой номер версии, движок системный.
// WebP поддерживается начиная с iOS 14.
if (preg_match('~(?:CriOS|FxiOS|EdgiOS)/~', $ua)
&& preg_match('~OS (\d+)[_\d]* like Mac OS X~', $ua, $m)
) {
return (int) $m[1] >= 14;
}
return false;
}

function fn_ab__webp_before_dispatch()
{
if (!defined('AB__WEBP_DEFAULT_QUANTITY')
&& SiteArea::isStorefront(AREA)
&& ((isset($_SERVER['HTTP_ACCEPT'])
&& strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false)
|| fn_ab__webp_ua_supports_webp()
|| isset(Tygh::$app['session']['ab__webp']))
) {


Везде где нужно получаем webp.
 

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...