Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
Иван Бочкарев
Пакетов
44
Закачек
301
Автор дополнения
Пакетов
44
Закачек
301
Версия 1.0.6-beta1
Дата выпуска 18.09.2026
Загрузки 27
Просмотры 681
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
ImageOptimizer ускоряет сайт на MODX 3 без правки чанков: конвертирует загруженные JPEG и PNG в WebP (и опционально AVIF), создаёт responsive-варианты и на выходе страницы подставляет с srcset. Браузер получает меньший файл, оригиналы остаются fallback.

Что получаете после установки
  • Меньший вес картинок — статические WebP/AVIF рядом с оригиналом (photo.768.webp), отдаются как обычные файлы, без PHP на каждый запрос
  • Responsive из коробки — breakpoints 480–1920 px (настраиваются), srcset и sizes в разметке
  • Авто-picture — плагин на OnWebPagePrerender оборачивает локальные , шаблоны и чанки не трогаете
  • Очередь под контролем — Vue-админка: статистика, фильтры, retry, rebuild по файлу или папке, кнопка Обработать очередь (cron не обязателен для старта)
  • Массовая обработка архива — пересборка каталога товаров (assets/images/products), загрузок MS3 (images/resources) или любого path в media source
  • Умные пропуски — Thumb3x/pThumb, SVG, внешние URL, класс no-optim, атрибут data-imageoptimizer-skip, уже готовый srcset или picture

Три шага до результата
  1. Установите пакет, pdoTools и VueTools (≥ 1.1.2-pl). На вкладке Сервер проверьте, что WebP «Доступен».
  2. Загрузите изображение в File Manager или нажмите Пересобрать очередь по нужной папке → Обработать очередь.
  3. Откройте страницу с картинкой — в HTML появится picture с WebP source (при inject_frontend=1 и активном плагине).

Для кого
  • Контент-сайты и лендинги — ускорение без ручной верстки picture
  • Интернет-магазины на MS3 — галереи товаров и загрузки resources
  • Разработчики — CLI/cron (cli/convert.php, cron/convert.php), права ACL, HTML-кэш инъекции, QA-стенд с 20 секциями тестов


Требования: MODX 3.0+, PHP 8.2+, GD или Imagick с WebP. AVIF — по желанию (cwebp, avifenc).

Скриншоты










Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.6-beta1] - 2026-09-18

Changed

  • Админка берёт тему PrimeVue через VueTools getActiveTheme() (@vuetools/useTheme), а не через жёсткий Aura. Переключатель vuetools.theme (aura/modx) работает без пересборки ImageOptimizer
  • Требование VueTools: ≥ 1.2.0-pl (transport requires, docs, lexicon)
  • CMP ближе к manager MODX 3: primary #6CB24A как у .primary-button, зелёные checked-состояния ToggleSwitch/ToggleButton, компактные отступы
  • Короткие подписи кнопок: Обработать, Пересобрать, Очистить, Сбросить (en/ru/uk)
  • StatCard: тона pending/done/failed/skipped, readiness слабее прогресса
  • Live: «Автообновление» / «Выкл». Подсказку про cron под кнопкой убрали
  • Icon-only кнопки (сброс фильтров, refresh/copy на Сервере) получили aria-label

Removed

  • Локальный preset imageoptimizer-preset.js (не использовался)

[1.0.5-beta1] - 2026-08-06

Fixed

  • Сохранение настроек: handler создаёт modSystemSetting, если записи нет в БД, и сбрасывает кэш system_settings. Иначе updated=0 и после refresh значения откатывались
  • settings/get отдаёт булевы настройки (enabled, convert_on_upload, html_cache и др.) как true/false, а не строки '1'/'0'. Переключатели после сохранения больше не «залипали» во включённом виде
  • Обзор: пока идёт обработка очереди, карточки статистики не закрываются скелетоном. Видны pending/done/failed/skipped
  • Live и polling не перерисовывают «Готовность сервера» каждые 5 с. Обновляются только счётчики очереди
  • Вкладка «Очередь»: таблица не закрывается loading-спиннером на время обработки. Строки обновляются без полной блокировки UI
  • Uninstall: resolver_uninstall.php не делает безусловный require_once файлов компонента (file-resolver может удалить их раньше). Флаг cleanup читается из БД. DROP TABLE и очистка core/cache/imageoptimizer/ идут без helpers. Удаление вариантов на диске только если helpers ещё есть, в try/catch. Диалог uninstall больше не зависает с 500

Changed

  • Прогресс на Обзоре считает завершённые задачи (done + failed + skipped), а не только done
  • Под прогрессом строка «В этом запуске / в очереди / ошибки» (imageoptimizer.queue.batch_progress)
  • Подсказки настроек: convert_on_upload не влияет на «Пересобрать» и breakpoints. Пустые breakpoints означают только full-size WebP/AVIF без ресайза (для уже подогнанных медиа)

Added

  • PHPUnit: SettingsTest, UninstallResolverTest

[1.0.4-beta1] - 2026-08-01

Fixed

  • Inject оставляет кириллицу и UTF-8 как есть. saveHTML() больше не превращает текст в Д. HTML-кэш сбрасывается через IMAGEOPTIMIZER_HTML_SERIALIZE_REV

Added

  • «Обработать очередь» крутит батчи до pending = 0, есть «Остановить». У Live была подсказка про cron (в 1.0.6 текст под кнопкой убран)

[1.0.3-beta1] - 2026-07-13

Fixed

  • Inject сохраняет , и ` на полном HTML-документе. Страница больше не оборачивается в#imageoptimizer-root`
  • Убран артефакт ` после inject. HTML-кэш инвалидируется черезIMAGEOPTIMIZER_HTML_SERIALIZE_REV`

[1.0.2-beta1] - 2026-07-11

Fixed

  • Inject не разбирает содержимое ,, , через DOMDocument. Строки с HTML в JS больше не ломают страницу
  • HTML-кэш inject учитывает хэш содержимого страницы (в т.ч. Fenom file:), а не только editedon ресурса

[1.0.1-beta1] - 2026-07-05

Fixed

  • HTML-кэш inject не используется для авторизованных пользователей фронтенда
  • Placeholder imageoptimizer.skip_html_cache отключает кэш inject (сниппеты, плагины)

[1.0.0-beta1] - 2026-06-28

Added

  • Конвертация JPEG/PNG/GIF/WebP в WebP и опционально AVIF (GD, Imagick, cwebp, avifenc)
  • Responsive-варианты по breakpoints (по умолчанию 480-1920 px), файлы рядом с оригиналом
  • Очередь imageoptimizer_queue: pending, processing, done, failed, skipped
  • Плагин: OnFileManagerUpload (enqueue + sync convert), OnWebPagePrerender (inject ``)
  • Vue-админка: Обзор, Очередь, Настройки, Сервер, Совместимость (VueTools ≥ 1.1.2-pl на релизе, с 1.0.6 нужно ≥ 1.2.0-pl)
  • Connector API: queue/list, retry, rebuild, clear, reset_stuck, process, stats, settings, server/check
  • Кнопка обработки очереди в админке (worker cron/CLI, lock cron.lock)
  • Rebuild по одному файлу или каталогу (imageoptimizer_rebuild_path)
  • CLI cli/convert.php, cron cron/convert.php, cron/prune.php
  • Пропуски inject: skip_classes, skip_src_pattern (Thumb3x), data-imageoptimizer-skip, SVG, внешние URL
  • HTML-кэш инъекции, права ACL (view, settings, run)
  • Документация: readme.txt, changelog.txt. Полный индекс и API на docs.modx.pro

Requirements

  • MODX Revolution 3.0+
  • PHP 8.2+
  • pdoTools, VueTools ≥ 1.1.2-pl (с 1.0.6-beta1: ≥ 1.2.0-pl)
  • GD или Imagick с WebP (AVIF опционально)

Последние обсуждения в сообществе MODX.pro