Skip to content
ImageOptimizer
ImageOptimizer
Конвертация изображений в WebP/AVIF, responsive srcset, очередь и авто-inject picture на витрине MODX 3
  1. Компоненты
  2. ImageOptimizer
  3. Админка

Админка

Компоненты → ImageOptimizer или manager/?a=index&namespace=imageoptimizer.

Пункт меню «Компоненты → ImageOptimizer»

Интерфейс на Vue 3 + PrimeVue через VueTools. Без VueTools ≥ 1.1.2-pl страница покажет vuetools_required.

Права доступа

ImageOptimizer регистрирует три permission. По умолчанию их получают группы Administrator и Manager.

PermissionОписание
imageoptimizer_viewПросмотр: очередь, статистика, Server, Compatibility, чтение настроек
imageoptimizer_settingsСохранение системных настроек imageoptimizer_*
imageoptimizer_runОчередь: process, rebuild, retry, clear, reset stuck

Поведение UI:

  • Пункт меню скрыт без imageoptimizer_view
  • Форма Настройки read-only без imageoptimizer_settings
  • Кнопки Обработать очередь, Retry, Rebuild, Clear, Reset stuck только с imageoptimizer_run

Роли

Редактор (только просмотр): imageoptimizer_view

Контент-менеджер (upload + rebuild): imageoptimizer_view, imageoptimizer_run

Технический администратор: все три permission

Путь: Настройки → Права доступа → Policies / User groups.

CLI и cron инициализируют MODX как mgr без сессии пользователя. ACL connector на cron не распространяется. Ограничьте доступ к shell и crontab на сервере.

Обзор

Сводка состояния:

  • статистика очереди: pending, processing, done, failed, skipped
  • прогресс выполнения (% done)
  • готовность сервера (энкодеры WebP/AVIF)
  • кнопки Обработать очередь и Сбросить зависшие (при imageoptimizer_run)

Переключатель Live обновляет сводку каждые 5 секунд.

Вкладка «Обзор» — статистика очереди и обработка

Очередь

Таблица imageoptimizer_queue: каждая строка — один вариант (исходник + ширина + формат).

Колонки

КолонкаЗначение
IDПервичный ключ
SourceID media source
PathОтносительный путь в source
Formatwebp, avif, …
WidthЦелевая ширина (0 = full-size WebP/AVIF)
Statuspending, processing, done, failed, skipped
Sizesoriginal_size → converted_size (байты)
ErrorТекст последней ошибки

Фильтры

  • по статусу
  • поиск по пути
  • пагинация (lazy load)
  • Live — автообновление таблицы

Вкладка «Очередь» — таблица задач и фильтры

Действия

ДействиеПравоОписание
Обработать очередьimageoptimizer_runКонвертация pending (до imageoptimizer_cron_limit за клик)
Пересобрать очередьimageoptimizer_runScan и enqueue
Очистить вариантыimageoptimizer_runУдаление файлов вариантов и строк очереди
Повторить выбранныеimageoptimizer_runfailed/skippedpending
Сбросить зависшиеimageoptimizer_runprocessingpending

Обработать очередь

Кнопка запускает тот же worker, что cron и cli/convert.php:

  1. Сбрасывает зависшие processing (как cron)
  2. Берёт lock core/cache/imageoptimizer/cron.lock (параллельно с cron не стартует)
  3. Обрабатывает до imageoptimizer_cron_limit задач за один HTTP-запрос
  4. Показывает: «Обработано N, в очереди осталось M»

При большой очереди нажимайте несколько раз или настройте cron. При лимите времени PHP увеличьте max_execution_time для FPM.

Диалог «Пересобрать очередь»

  1. Media source — ID источника (обычно 1, Filesystem)
  2. Path — файл или папка относительно корня source, не URL сайта:
    • пусто — весь source рекурсивно
    • assets/images/products — каталог MiniShop
    • images/resources — загрузки MS3
    • assets/test/hero.jpg — один файл
  3. Только просмотр — сколько файлов попадёт в scan (не число строк очереди)
  4. Запустить — постановка задач

Диалог «Пересобрать очередь» — source, path, dry-run

После rebuild нажмите Обработать очередь или дождитесь cron.

Типичные статусы

  • skipped — upscale skip, SVG, уже WebP, animated GIF, HEIC без декодера, MemoryLimit
  • failed — нет энкодера, ошибка диска; смотрите Error и Решение проблем

Настройки

Форма всех imageoptimizer_* с группировкой по разделам. Сохранение через connector → modSystemSetting.

После смены breakpoints или formats для уже загруженных файлов нужен rebuild или повторная загрузка. См. Системные настройки.

Вкладка «Настройки» — форма imageoptimizer_*

Сервер

Проверка окружения (read-only):

  • версия PHP, лимиты memory / execution time
  • GD / Imagick: WebP, AVIF, HEIC
  • CLI: cwebp, avifenc, heif-convert (с fallback на /opt/homebrew/bin при пустом PATH в FPM)
  • готовность сервера (%)
  • Cron-команда — копирование в буфер

Карточки энкодеров: Доступен / Не найден.

На Valet/Herd CLI и FPM могут быть разными PHP: imagick в CLI ≠ imagick в FPM. См. Решение проблем.

Вкладка «Server» — PHP, энкодеры, cron-команда

Минимальные требования

КомпонентТребование
PHP≥ 8.2
Расширенияfileinfo, gd или imagick, json
WebPGD с WebP, Imagick или CLI cwebp
AVIFavifenc или Imagick с AVIF при avif_enabled=1

Рекомендуемые лимиты: memory_limit ≥ 256M (для больших фото 512M), max_execution_time ≥ 60 для CLI/cron.

ImageOptimizer пишет в assets/... (варианты) и core/cache/imageoptimizer/ (temp, HTML cache, lock). Пользователь PHP должен иметь запись в media source и core/cache/.

Совместимость

Вкладка Compatibility: статус VueTools, подсказки по Thumb3x / MS3. См. Совместимость.

Вкладка «Compatibility» — VueTools и связанные extras

Ошибки UI

API: assets/components/imageoptimizer/connector.php, POST, параметр action, cookie сессии mgr.

HTTPПричина
401Нет сессии mgr или неверный modAuth
403Нет permission на action
409worker_busy: cron или другой Обработать уже работает

«Unexpected token '<'» / invalid JSON

Коннектор вернул HTML вместо JSON (PHP warning, 404, гонка загрузки Vue). Обновите страницу (Cmd+Shift+R), проверьте connector.php в Network. Пустая страница / «VueTools not found» — установите VueTools. Если ставили пакет из GitHub без transport, соберите админку по README.

Подробнее: Решение проблем.

Связанные разделы