Модуль "Upload Image by URL in WebP" для ocStore 3.0.4.1
Версия модуля: 2.0
Автор: webitproff
Тестировалось на: ocStore 3.0.4.1, PHP 8.2, MySQL 8.0
Описание модуля
Модуль позволяет загружать изображения товаров напрямую по URL и сохранять их в формате WebP, добавляя их в галерею товара или устанавливая как основное изображение.
Это особенно удобно, если изображения уже размещены на стороннем сервере и не требуется скачивать их вручную, переименовывать и конвертировать. Модуль автоматически обрабатывает все основные форматы изображений — JPEG, PNG, WebP — и сохраняет их в оптимизированном виде для интернет-магазина.
Модуль интегрируется в административную панель ocStore и добавляет новый интерфейс в таб "Изображения" на странице редактирования товара, включая:
- Поле для вставки URL изображения.
- Чекбокс для установки изображения как основного.
- Индикатор прогресса загрузки.
- Автоматическое добавление нового изображения в список галереи товара.
Функционал модуля
- Загрузка изображения по URL
Администратор вставляет ссылку на изображение, выбирает, будет ли оно основным, и нажимает "Загрузить". - Поддержка форматов
Модуль поддерживает: - Автоматическое создание имени файла и папки
- Имя файла формируется через транслитерацию названия товара, модели, названия магазина и порядкового номера изображения.
- Для хранения создается папка
catalog/YYYY-MM-DD-H/, где YYYY-MM-DD-H — текущая дата и час.
- Конвертация и оптимизация изображений
- Если изображение больше 900px по ширине, оно автоматически масштабируется до 900px, сохраняя пропорции.
- Все изображения сохраняются в формате WebP с качеством 85%.
- Обновление базы данных
- Если выбран флаг "Основное изображение", путь к изображению обновляет поле
product.image. - Если флаг не выбран, изображение добавляется в таблицу
product_image с правильным sort_order.
- Отображение в админке
- Для новых изображений создается миниатюра размером 100x100px.
- Изображения появляются в таблице галереи товара без необходимости обновления страницы.
Полный процесс работы с изображением
- Вставка ссылки
Администратор вводит URL изображения в поле "URL изображения" и нажимает "Загрузить". - Проверка валидности данных
- Проверяется, введен ли URL и существует ли ID товара.
- Если данные отсутствуют, пользователю возвращается ошибка.
- Получение данных о товаре
- Модуль загружает информацию о товаре через модель
catalog/product. - Если товар не найден, выводится ошибка.
- Генерация имени файла и директории
- Название, модель и магазин транслитерируются в латиницу.
- Создается уникальное имя файла в формате:
название-модели-id-товара-магазин-порядковыйномер.webp
-
- Папка для хранения создается автоматически по текущей дате и часу.
- Скачивание изображения
- Используется
cURL для получения данных с указанного URL. - Проверяется код ответа сервера (должен быть 200).
- Если изображение недоступно — возвращается ошибка.
- Проверка формата изображения
- Через
finfo проверяется MIME-тип. - Поддерживаются только JPEG, PNG и WebP.
- Обработка изображения
- Конвертируется в ресурс GD (
imagecreatefromjpeg/png/webp). - Если ширина больше 900px — изображение масштабируется, сохраняя пропорции.
- Сохраняется как WebP с качеством 85%.
- Временный файл удаляется после обработки.
- Сохранение пути в базе данных
- Если флаг "Основное изображение" активен — обновляется поле
product.image. - Иначе — создается запись в
product_image с корректным sort_order.
- Отображение пользователю
- В админке миниатюра нового изображения появляется в таблице галереи.
- Прогресс загрузки отображается в виде полосы с процентами.
- После успешной загрузки администратор видит уведомление об успехе.
Преимущества модуля
- Экономия времени на загрузку изображений.
- Автоматическая конвертация в WebP для оптимизации скорости загрузки сайта.
- Поддержка массовых операций через простое указание URL.
- Интеграция с существующей галереей товаров ocStore.
- Совместимость с PHP 8.2 и MySQL 8.0.