Плагин Attacher для Cotonti: мощный инструмент управления файлами и изображениями
В современном веб-разработке управление загрузками файлов и изображений стало неотъемлемой частью практически любого проекта. CMS Cotonti, известная своей гибкостью и модульностью, предлагает разработчикам широкий выбор расширений. Среди них особое место занимает плагин Attacher — универсальное решение для прикрепления, хранения и обработки файлов, которое превращает стандартную загрузку в интеллектуальный медиа-менеджер.
Что такое Attacher?
Attacher — это многофункциональный плагин для Cotonti, предназначенный для организации загрузки файлов любого типа, создания галерей, управления вложениями и автоматической обработки изображений. Он позволяет пользователям легко прикреплять файлы к страницам, комментариям, форумам и другим модулям, а разработчикам — гибко настраивать поведение под конкретные задачи.
Благодаря современному подходу к загрузке (с поддержкой технологии drag-and-drop, множественного выбора, фоновой отправки и многого другого) плагин обеспечивает комфортную работу как для посетителей, так и для администраторов. Однако главная его сила кроется в глубокой интеграции с архитектурой Cotonti и богатых возможностях постобработки загружаемого контента.
Основные возможности плагина
Attacher предлагает широкий спектр функций, которые охватывают практически все потребности, связанные с файлами:
Загрузка файлов любых типов: плагин поддерживает любые расширения, которые разрешены в настройках — от документов (PDF, DOC, XLS) до архивов (ZIP, RAR) и, конечно, изображений.
Множественная загрузка: возможность выбирать и отправлять сразу несколько файлов, что значительно ускоряет работу.
Drag-and-drop: файлы можно перетаскивать мышью прямо в область загрузки — удобно и интуитивно понятно.
Прогресс-бар: отображение процесса отправки для каждого файла в отдельности и общего прогресса.
Управление порядком: загруженные файлы можно сортировать простым перетаскиванием (drag & drop), менять их очередность.
Редактирование метаданных: для каждого файла можно задать заголовок, который будет использоваться в галереях и ссылках.
Замена файлов: возможность заменить существующий файл новым, не удаляя старый — полезно при обновлении документации или изображений.
Удаление: гибкое удаление как отдельных файлов, так и групп с помощью чекбоксов.
Автоматическое создание миниатюр: для изображений генерируются уменьшенные копии с заданными размерами и режимами кадрирования.
Водяные знаки и текстуры: поддержка наложения полупрозрачных логотипов и фоновых текстур на изображения.
Конвертация и оптимизация изображений (новая функция): все загружаемые картинки автоматически преобразуются в формат WebP с качеством 85% и масштабируются до 1200 пикселей по ширине, что обеспечивает идеальный баланс между качеством и скоростью загрузки сайта.
Загрузка файлов по внешней ссылке
Одной из востребованных функций в современных CMS является возможность импортировать файлы не только с компьютера, но и по прямой ссылке из интернета. Attacher реализует эту задачу элегантно и надёжно.
В интерфейсе плагина появилось специальное поле «Загрузить по URL». Пользователь вставляет ссылку на изображение или документ, и плагин самостоятельно скачивает файл на сервер, после чего он отображается в списке вложений наравне с обычными загрузками.
Для обеспечения максимальной совместимости используется гибридный подход:
Прямой fetch в браузере — если сайт-источник позволяет, файл загружается напрямую через JavaScript, что быстро и не нагружает сервер.
Серверный прокси через cURL — если прямая загрузка невозможна из-за CORS-политики или других ограничений, запрос автоматически направляется на сервер, где файл скачивается с помощью cURL, после чего передаётся клиенту.
Таким образом, пользователь может загружать изображения с любых ресурсов (например, с ozon, market яндекс, Prom, OpenCart-магазинов, фотостоков), не сталкиваясь с ошибками «Failed to fetch». Плагин сам выбирает оптимальный путь, а для пользователя всё происходит прозрачно — после вставки ссылки файл мгновенно появляется в списке. Но стоит иметь ввиду, что на каждом сайте может стоять пользовательская защита, и 100 % со всех сайтов вы загрузить не сможете будет например “Error Failed to download file: HTTP 403”, но достойное большинство - без проблем.
Интеллектуальная обработка изображений
Современный веб немыслим без оптимизации изображений. «Тяжёлые» картинки замедляют загрузку страниц, ухудшают пользовательский опыт и влияют на SEO-ранжирование. Attacher решает эту проблему кардинально — он полностью автоматизирует процесс подготовки изображений при загрузке.
Новый механизм обработки включается для всех файлов, которые система распознаёт как изображения (jpg, png, gif, webp). Принцип работы следующий:
Масштабирование: определяется ширина исходного изображения. Если она превышает 1200 пикселей, картинка пропорционально уменьшается до этой границы. Такой подход гарантирует, что на сайте не появятся изображения с избыточным разрешением, которые всё равно будут сжиматься браузером или CSS. При этом пропорции сохраняются — изображение не обрезается и не искажается.
Конвертация в WebP: независимо от исходного формата (будь то PNG с прозрачностью, GIF-анимация или классический JPEG), файл преобразуется в современный формат WebP. Данный формат обеспечивает превосходное сжатие без видимой потери качества: размер файла может быть на 25–35% меньше по сравнению с JPEG при том же визуальном восприятии. Качество кодирования установлено на уровне 85%, что является оптимальным компромиссом для фотографий и графики.
Удаление оригинала: после успешного создания WebP-версии исходный файл удаляется, чтобы не занимать место на диске. В базе данных фиксируется новое расширение, а все ссылки и миниатюры строятся уже на основе WebP.
Эта система работает как для файлов, загруженных с компьютера, так и для изображений, импортированных по URL. В результате администратору и пользователям не нужно думать об оптимизации — плагин делает всё автоматически, а сайт всегда использует только оптимизированные WebP-изображения. Это особенно актуально для интернет-магазинов, каталогов товаров, портфолио и любых проектов с большим количеством графики.
Глубокая интеграция с Cotonti
Attacher спроектирован как полноценный компонент экосистемы Cotonti, поэтому он тесно взаимодействует с ядром системы и другими модулями.
API для разработчиков:
Функции att_add(), att_remove(), att_get(), att_get_all() позволяют управлять вложениями прямо из кода модулей.
Виджет att_filebox() генерирует интерфейс загрузки в любом месте сайта — достаточно передать параметры области (area), идентификатора элемента (item) и поля (field).
Теги в шаблонах {ATTACHER_ROW_*} упрощают вывод файлов и галерей в нужном оформлении.
Функции att_gallery() и att_downloads() предоставляют готовые решения для отображения изображений и списков файлов.
Использование в популярных модулях:
Страницы (Page): можно прикрепить несколько изображений к одной странице, создавая фотоотчёты или иллюстрации к статье.
Форум (Forums): вложения к сообщениям, возможность вставить изображение прямо в пост.
Комментарии (Comments): пользователи могут добавлять файлы к своим комментариям.
Пользовательские модули: любой модуль, созданный разработчиком, может легко интегрировать Attacher через стандартные вызовы.
Кроме того, плагин поддерживает множественные поля — к одному объекту (например, странице) можно прикрепить несколько независимых наборов файлов, просто указав разные значения параметра field. Это позволяет, скажем, отдельно хранить галерею товара и отдельно техническую документацию.
Безопасность и права доступа
Attacher уделяет большое внимание безопасности, что критично для любого файлового менеджера.
Проверка прав доступа: загрузка доступна только пользователям с соответствующими правами (по умолчанию право W для плагина). При удалении файла проверяется, принадлежит ли он текущему пользователю или пользователь имеет права администратора.
Валидация расширений: администратор задаёт список разрешённых расширений (например, jpg,png,gif,pdf,doc). Файлы с другими расширениями отклоняются ещё на этапе загрузки.
Лимиты размера: можно установить максимальный размер одного файла и общий объём дискового пространства для одного пользователя. Это предотвращает переполнение сервера.
Ограничение количества: для каждой области и поля можно задать максимальное количество файлов. Плагин не позволит загрузить больше лимита.
Проверка изображений: для картинок дополнительно проверяется, не превышают ли они лимиты памяти PHP, чтобы избежать сбоев при создании миниатюр.
Гигиена временных файлов: реализован механизм сборщика мусора, который удаляет файлы, загруженные, но не привязанные к объекту (например, при прерванном создании страницы).
Интерфейс и пользовательский опыт
Внешний вид виджета загрузки выполнен в современном стиле и легко кастомизируется через CSS. Пользователю доступны:
Кнопка «Добавить файлы» для выбора с компьютера.
Поле ввода URL для загрузки по ссылке.
Область перетаскивания (drag & drop).
Таблица со списком уже загруженных файлов, где для каждого отображается миниатюра (или иконка), имя, размер, поле для заголовка, чекбокс для групповых операций и меню дополнительных действий (замена, удаление).
Кнопки «Удалить», «Отметить все» для массового управления.
Для изображений — быстрые кнопки вставки миниатюр заданных размеров прямо в редактор (если используется визуальный редактор).
Интерфейс полностью адаптивен и комфортно работает на мобильных устройствах. Все операции выполняются асинхронно, без перезагрузки страницы.
Примеры использования
Галерея товаров в интернет-магазине. В карточке товара размещается виджет Attacher с полем field='gallery'. Продавец загружает фотографии товара — они автоматически преобразуются в WebP и масштабируются до 1200px. На витрине с помощью функции att_gallery() выводятся миниатюры, при клике открывается полноразмерное изображение. Всё быстро, оптимизированно, без ручной возни с фотошопом.
Библиотека документов для корпоративного портала. Сотрудники загружают договоры, инструкции, презентации. Attacher позволяет установить лимит на объём для каждого пользователя и разрешить только определённые типы файлов (PDF, DOCX). Удобный интерфейс сортировки позволяет поддерживать порядок.
Портфолио фотографа. Фотограф загружает свои работы через URL с внешнего фотохостинга или с компьютера. Плагин автоматически создаёт набор миниатюр для превью и использует WebP для ускорения загрузки портфолио. Клиенты могут просматривать работы в высоком качестве, но при этом трафик остаётся минимальным.
Форум поддержки. Пользователи могут прикреплять скриншоты ошибок к своим сообщениям. Attacher проверяет расширения (только изображения), ограничивает размер, не даёт загрузить слишком много. Модераторы могут заменять изображения при необходимости.
Настройки плагина
Панель конфигурации Attacher предлагает десятки параметров, позволяющих тонко настроить поведение под конкретный проект:
Основные: папка для хранения файлов, префикс имён, разрешённые расширения, MIME-типы.
Лимиты: максимальный размер файла, общий объём на пользователя, максимальное количество файлов на объект.
Миниатюры: размеры по умолчанию для превью, режимы кадрирования (crop, width, height, auto), качество JPEG/WebP.
Водяные знаки: включение, путь к изображению, минимальные размеры для наложения, позиция.
Фоновые текстуры: возможность добавить подложку под изображения.
Обработка изображений: включение автоматической конвертации в WebP, максимальная ширина (1200 по умолчанию), качество (85%).
Интеграция с редакторами: настройка кнопок вставки изображений определённых размеров.
Безопасность: разрешение на замену файлов, управление доступом.
Все настройки хорошо документированы и сопровождаются подсказками в интерфейсе.
Требования и совместимость
Attacher работает на Cotonti версии 0.9.24 и выше. Для полноценной работы требуются:
PHP версии 7.4 или 8.x с расширениями GD (для обработки изображений), cURL (для загрузки по URL), FileInfo (для определения MIME-типов).
Поддержка JavaScript в браузере пользователя (для интерфейса загрузки). Для очень старых браузеров предусмотрен fallback на iframe-транспорт.
Плагин протестирован с популярными модулями (Page, Forums, Comments) и не конфликтует с большинством других расширений. Регулярно обновляется, получая новые функции и исправления.
Заключение
Attacher — это не просто плагин загрузки файлов для Cotonti, а полноценная медиа-экосистема. Он берёт на себя все задачи, связанные с файлами: от безопасной загрузки до глубокой оптимизации и удобного представления. Благодаря поддержке современных технологий (WebP, cURL, drag-and-drop) и тесной интеграции с ядром CMS, Attacher становится незаменимым инструментом как для разработчиков, создающих сложные проекты, так и для конечных пользователей, которые хотят просто и быстро публиковать контент.
Автоматическая конвертация в WebP с масштабированием до 1200px решает проблему производительности сайта на корню — больше не нужно вручную сжимать каждую картинку. Загрузка по URL открывает новые возможности для наполнения сайта контентом из внешних источников. Гибкие настройки и API позволяют адаптировать плагин под любые, даже самые нестандартные задачи.
Если вы ищете надёжное, современное и функциональное решение для управления файлами в Cotonti — Attacher станет отличным выбором, который оправдает вложенные в него ожидания и сделает работу с сайтом по-настоящему комфортной.
Постоянная ссылка на исходный код плагина на GitHub