990
11.79
14.14
за сайт
- Проверено Modstore
- Бесплатные будущие обновления
- Работа на тестовом и публичном домене
- 12 месяцев тех. поддержки
Версия
1.0.0-pl
Дата выпуска
25.09.2026
Загрузки
0
Просмотры
10
Как это обычно происходит: открываем RealFaviconGenerator, загружаем логотип, настраиваем, скачиваем архив, распаковываем, заливаем по FTP, копируем десяток тегов в шаблон, а потом ещё правим site.webmanifest, потому что там MyWebSite вместо названия сайта. А через полгода заказчик просит новогоднюю фавиконку — и всё по новой. А после Нового года — обратно.
EasyFavicon делает это из админки:
1. Выбираете картинку в медиа-хранилище MODX.
2. Настраиваете фавиконку в родном редакторе RealFaviconGenerator.
3. Возвращаетесь в MODX — файлы уже лежат в каталоге сайта, манифест заполнен данными сайта, а разметка стоит в <head> каждой страницы.
Никаких архивов, FTP и копирования тегов.

Никакого самописного конструктора: вы работаете в редакторе RealFaviconGenerator со всеми его настройками — цвет плитки, поля, скругления, тема, — жмёте Generate, и браузер возвращает вас в менеджер с готовым набором. Компонент сам скачивает архив, распаковывает его в каталог профиля и сохраняет разметку.

Несколько наборов на одном сайте, один активный. Архив каждой сборки хранится, поэтому переключение профиля возвращает на сайт и разметку, и файлы. Основная, новогодняя, к распродаже — меняются переключателем в списке, пересобирать ничего не нужно.

У языковой версии или поддомена может быть своя фавиконка: отмечаете у профиля контексты, и в них выводится он, а в остальных — общий профиль без контекстов.
Имена файлов у RealFaviconGenerator одинаковые, поэтому компонент следит, чтобы активные профили разных контекстов не делили один каталог и не затирали друг другу иконки: включить профиль в занятый каталог не получится — EasyFavicon назовёт конфликтующий профиль и попросит указать свой каталог.
RealFaviconGenerator кладёт в набор site.webmanifest со своими заглушками ("name": "MyWebSite", "short_name": "MySite") и без start_url — подсказать ему имя приложения через API нельзя.
Поэтому после распаковки EasyFavicon дописывает манифест: name и short_name из site_name, start_url и id из base_url, lang из cultureKey. Заполняются только пустые поля и заглушки сервиса — то, что вы вписали в редакторе, остаётся нетронутым. В сохранённом архиве профиля лежит исходный файл от сервиса.
Плагин добавляет разметку активного профиля перед </head> — шаблоны трогать не нужно. Если место вывода хочется выбрать самому, выключаете автовставку и зовёте сниппет:
После сборки видно, как иконка выглядит в браузерах и на мобильных, какая разметка встала на страницы и какие файлы легли в каталог.

Компонент распаковывает архив в открытый каталог сайта, поэтому:
Страница компонента выглядит родной частью менеджера и в MODX 3, и в MODX 2: те же кнопки, окна, уведомления и подтверждения. В списке — поиск, сортировка по столбцам и меню действий по правому клику, как в таблицах MODX. ExtJS в интерфейсе нет.

EasyFavicon работает через интерактивный API RealFaviconGenerator, поэтому ключ обязателен. Он бесплатный: получается на realfavicongenerator.net/api и вписывается в системную настройку easyfavicon.api_key. Кнопка «Системные настройки» на странице компонента откроет нужный раздел сразу с фильтром.
EasyFavicon — независимый продукт. Он не связан с RealFaviconGenerator.net, не одобрен и не поддерживается этим сервисом; название упоминается только для того, чтобы сказать, куда компонент обращается. Работа с сервисом подчиняется его условиям.
EasyFavicon делает это из админки:
1. Выбираете картинку в медиа-хранилище MODX.
2. Настраиваете фавиконку в родном редакторе RealFaviconGenerator.
3. Возвращаетесь в MODX — файлы уже лежат в каталоге сайта, манифест заполнен данными сайта, а разметка стоит в <head> каждой страницы.
Никаких архивов, FTP и копирования тегов.

Сборка в родном редакторе сервиса
Никакого самописного конструктора: вы работаете в редакторе RealFaviconGenerator со всеми его настройками — цвет плитки, поля, скругления, тема, — жмёте Generate, и браузер возвращает вас в менеджер с готовым набором. Компонент сам скачивает архив, распаковывает его в каталог профиля и сохраняет разметку.

Профили: новогодняя фавиконка в один клик
Несколько наборов на одном сайте, один активный. Архив каждой сборки хранится, поэтому переключение профиля возвращает на сайт и разметку, и файлы. Основная, новогодняя, к распродаже — меняются переключателем в списке, пересобирать ничего не нужно.

Контексты
У языковой версии или поддомена может быть своя фавиконка: отмечаете у профиля контексты, и в них выводится он, а в остальных — общий профиль без контекстов.
Имена файлов у RealFaviconGenerator одинаковые, поэтому компонент следит, чтобы активные профили разных контекстов не делили один каталог и не затирали друг другу иконки: включить профиль в занятый каталог не получится — EasyFavicon назовёт конфликтующий профиль и попросит указать свой каталог.
Манифест заполняется данными сайта
RealFaviconGenerator кладёт в набор site.webmanifest со своими заглушками ("name": "MyWebSite", "short_name": "MySite") и без start_url — подсказать ему имя приложения через API нельзя.
Поэтому после распаковки EasyFavicon дописывает манифест: name и short_name из site_name, start_url и id из base_url, lang из cultureKey. Заполняются только пустые поля и заглушки сервиса — то, что вы вписали в редакторе, остаётся нетронутым. В сохранённом архиве профиля лежит исходный файл от сервиса.
Автовставка или сниппет
Плагин добавляет разметку активного профиля перед </head> — шаблоны трогать не нужно. Если место вывода хочется выбрать самому, выключаете автовставку и зовёте сниппет:
[[EasyFavicon]] [[EasyFavicon? &profile=`Новогодняя`]]Пути учитывают base_url, так что сайт в подкаталоге тоже не проблема. К ссылкам добавляется метка сборки, поэтому после смены профиля никто не будет разглядывать старую иконку из кеша браузера.
Просмотр результата
После сборки видно, как иконка выглядит в браузерах и на мобильных, какая разметка встала на страницы и какие файлы легли в каталог.

Безопасность
Компонент распаковывает архив в открытый каталог сайта, поэтому:
- вернуться из редактора можно только в ту сессию менеджера, где сборку начали;
- скачивание идёт только с realfavicongenerator.net;
- из архива на сайт попадают только файлы набора: png, ico, svg, webmanifest и компания;
- страница и все процессоры требуют право settings.
Интерфейс
Страница компонента выглядит родной частью менеджера и в MODX 3, и в MODX 2: те же кнопки, окна, уведомления и подтверждения. В списке — поиск, сортировка по столбцам и меню действий по правому клику, как в таблицах MODX. ExtJS в интерфейсе нет.

Нужен бесплатный API-ключ RealFaviconGenerator
EasyFavicon работает через интерактивный API RealFaviconGenerator, поэтому ключ обязателен. Он бесплатный: получается на realfavicongenerator.net/api и вписывается в системную настройку easyfavicon.api_key. Кнопка «Системные настройки» на странице компонента откроет нужный раздел сразу с фильтром.
EasyFavicon — независимый продукт. Он не связан с RealFaviconGenerator.net, не одобрен и не поддерживается этим сервисом; название упоминается только для того, чтобы сказать, куда компонент обращается. Работа с сервисом подчиняется его условиям.
1.0.0-pl
- Контексты у профиля: поле «Контексты» в форме (появляется, когда контекстов на сайте
больше одного) и колонка в таблице. Активным может быть один профиль на контекст, а
профиль с отмеченными контекстами главнее профиля без них: тот выводится во всех
остальных. Включение профиля выключает активные профили тех же контекстов; плагин и
сниппет берут активный профиль контекста страницы. Поле
contextsдобавляется в таблицу профилей резолвером при обновлении. - Активные профили разных контекстов не делят каталог: имена файлов у RealFaviconGenerator общие, и наборы затёрли бы друг друга. Включить профиль в занятый каталог не получится — EasyFavicon назовёт профиль, который его занял, и попросит указать свой. Включённый профиль выкладывает на сайт свой сохранённый набор, а не тот, что остался от соседнего.
- Переключатель в строке профиля теперь и выключает активный профиль, а не только включает.
- Таблица профилей сортируется по колонкам «Профиль», «Исходник», «Каталог» и «Обновлён»: щелчок по заголовку — по этой колонке, повторный — в обратную сторону, у активной колонки стрелка. Сортирует сервер, поэтому порядок общий для всех страниц списка.
- Правый клик по строке профиля открывает меню с её действиями — «Собрать», «Проверить», «Изменить», «Удалить», — как контекстное меню грида MODX. В полях ввода остаётся меню браузера.
- Переход у кнопок — как у
.x-btn: в MODX 3 плавно меняется только фон (0.2s), в MODX 2 перехода нет. Раньше плавно менялись фон и текст, а рамка — сразу, и синяя кнопка MODX 2 проявлялась рывками. - Строки таблицы профилей не подсвечиваются при наведении: гриды MODX строку под курсором
не красят (
trackMouseOver: false). - Иконки пейджера стоят по центру кнопок на любом масштабе: сдвиги переснятые по снимкам на 100, 125, 150 и 200%. В MODX 3 круговая стрелка сидела на 1–2px выше центра.
- Крестик окна — SVG вместе с кругом подсветки, а не глиф Font Awesome: глиф прилипал к пиксельной сетке, и на масштабе 125–150% крестик съезжал с центра круга.
- Окна снова закрываются по Escape: клавишу перехватывал ExtJS менеджера (слушает keydown на
documentи останавливает всплытие), и обработчик наwindowеё не получал. Теперь окно ловит Escape на самом себе, раньшеdocument; Escape, адресованный окну ExtJS поверх него, по-прежнему окно не закрывает. - Перевод на таджикский (
tg): интерфейс, ошибки и системные настройки. - Релиз собирает GitHub Actions на MODX 2.8.6: PHP в пакете без комментариев, содержимое зашифровано ключом modstore.pro — вместе с файлами компонента, а не только элементы. Без покупки для сайта пакет не ставится, открытого PHP в архиве нет. К релизу прикладываются архив и заметки из истории коммитов.
- Убрана сборка без редактора: неинтерактивный API RealFaviconGenerator в новой
документации сервиса отмечен как недоступный. Вместе с ней ушли процессор
generate, поля профиляdesign,settingsиnon_interactive_request, JSON-редакторы в форме и системные настройкиapi_url,compression,scaling_algorithm. Дизайн по умолчанию, где ещё жили плитки Windows, маска Safari и объявления Android из старого пакета, ушёл вместе с ними. - Режим разработки больше не системная настройка: у клиентов
easyfavicon.dev_modeиeasyfavicon.dev_urlвисели в настройках без пользы. Теперь его включает только переменная окруженияEASYFAVICON_DEV_URLстенда. Если dev-сервер не отвечает, грузится собранный бандл, а не пустая страница. - Конфиг админки выводится с
JSON_HEX_TAG: `` в сообщении callback или в путях больше не закрывает тег скрипта. - Безопасность: возврат из редактора RealFaviconGenerator принимается только с
одноразовым токеном, который процессор
interactiveкладёт в сессию и отправляет вcustom_parameterвместе с id профиля. Раньше ссылку на callback с чужим результатом достаточно было подсунуть администратору: Extra скачивала архив с любого адреса и распаковывала его в каталог сайта.json_resultиз адресной строки больше не принимается,json_result_urlиpackage_url— только https сrealfavicongenerator.net. - Безопасность: из пакета на сайт попадают только файлы набора (
png,ico,svg,webmanifest,xml,json) с простыми именами. Прочие типы,x.php.pngи пути с..отбрасываются и пишутся в журнал; каталог файлов с..отклоняется целиком. - Безопасность: HTTP-клиент ходит только по http и https, в том числе по редиректам.
- Безопасность: страница, пункт меню и все процессоры требуют системное право
settings. Callback к тому же выполнялся ещё до проверки прав: MODX спрашиваетcheckPermissions()послеinitialize(). - Безопасность: исходное изображение с диска читается только внутри корня сайта и вне
core/, и только картинка (PNG, JPG, GIF, WebP, SVG, содержимое проверяется). Раньше через поле профиля можно было получить в браузере base64 любого файла, вплоть доcore/config/config.inc.php. Ошибка больше не показывает абсолютный путь. - Архивы сборок профилей и миниатюры хранятся вне каталогов компонента: в
core/packages/easyfavicon/иassets/easyfavicon/thumbs/. Раньше они лежали вcore/components/easyfavicon/иassets/components/easyfavicon/, которые MODX при удалении пакета сносит целиком, — сохранённые сборки пропадали вместе с ним, а на стенде попадали в собранный транспортный пакет. Прежние файлы не переносятся. - Сборка: запущенный от root сборщик отдаёт архив и распакованный пакет в
core/packages/владельцу каталога — менеджер от www-data снова может удалить или переустановить пакет. Отсутствующий каталог_build/resolvers/больше не роняет сборку. - Удалён
_build/resolvers/_symlinks.php: сборщик его никогда не подключал, а при запуске он удалял каталоги исходников вExtras/easyfavicon/. Для нативного стека естьdev-link.ps1. - Дата сборки в списке профилей выводится в формате менеджера (
manager_date_formatиmanager_time_format), а не жёстко какY-m-d H:i. - Если файла бандла на диске не видно, метка в его URL — версия Extra, а не пустая строка: без метки браузер после обновления держал бы старые css и js из кеша.
- Список профилей показывает ответ последнего запроса: при быстром вводе в поиск медленный ответ по «a» приходил позже ответа по «ab» и затирал его выдачу, то же случалось при быстром листании.
- «Просмотр» при отказе сервера показывает ошибку, а не открывает пустую панель разметки.
- Разметка копируется и в менеджере, открытом по http: Clipboard API там нет, и кнопка «Скопировать» отвечала только ошибкой. Теперь текст копируется через выделение.
- Кнопки и поля сверены с менеджером. Кнопки — 36px, как
.x-btn(в строке таблицы 28px, в панели модалки 42px и 44px в MODX 2, пейджер остался на своих замеренных 32px), рамка при наведении#ccc, а в MODX 2 обычная кнопка при наведении и фокусе заливается синим#3697cd(при нажатии#2d86b7), как.x-btn-overи.x-btn-click; заблокированная кнопка, в том числе градиентная основная в MODX 2, больше не отзывается на наведение и нажатие. Поля и выпадающие списки — общим классом, как.x-form-text: рамка#e4e4e4, при наведении#ccc, при фокусе#999(в MODX 2#2d86b7на фоне#fbfbfb), своя стрелка у списка. - Кнопка «Системные настройки» справа от «Новый профиль» и ссылка в предупреждении об
отсутствующем API-ключе ведут в системные настройки сразу с фильтром по EasyFavicon
(
?a=system/settings&ns=easyfavicon&area=easyfavicon_main). Фильтр понимают таблицы MODX 2 и 3 и EasySettings,api_keyв разделе первый. - Кольцо клавиатурного фокуса больше не перекрывается чёрным системным: в MODX 3 его
рисует правило менеджера
.ext-webkit :focus-visibleс!important. - Заголовок страницы — как у менеджера: в MODX 3 20px
#53595f, в MODX 2 25px#555. Подзаголовки в модалках — 550 в MODX 3 и bold в MODX 2. - Поиск и «Новый профиль» стоят в контейнере действий, как
#modx-action-buttons: у правого края окна, в MODX 3 — у его верха, в MODX 2 — на полупрозрачной подложке, свисающей от верха панели. У поиска иконка и кнопка очистки, Escape очищает поле,/и Ctrl+K ставят в него фокус в любой раскладке. - Удаление и сборка подтверждаются не нативным
confirm(), а штатным окном менеджераExt.Msg.confirm— тем же вызовом, что делаетMODx.msg.confirmв MODX 2 и 3: заголовок — строка ядраwarning, кнопки «Да» и «Нет» менеджер подписывает сам. Имя профиля и каталог в тексте экранируются. Окно закрывается сразу после «Да»: ход операции видно на кнопке в строке таблицы, итог и ошибки — в штатных уведомлениях менеджера. Пока окно открыто,/и Ctrl+K не срабатывают. - Модалки выглядят как окна менеджера (
.x-windowMODX 3 и 2): белая маска в 50%, скругление 3px и тень, полоса заголовка 35px с жирным 13px по центру и круглым крестиком Font Awesome справа, белое тело с отступами 15px, панель кнопок 42px (в MODX 2 — 44px) с кнопками справа. В MODX 2 заголовок и панель кнопок на#f0f0f0с линией#dcdcdc. Окно появляется, как у менеджера, — вырастает из 0.7 за 0,25 с; приprefers-reduced-motion— без анимации. - Модалки — диалоги для скринридеров (
role="dialog",aria-modal, подписаны заголовком). При открытии фокус уходит в окно, при закрытии возвращается туда, откуда его открыли. Escape не закрывает модалку, пока открыто окно или выпадающий список ExtJS. - Уведомления — штатные менеджера MODX, а не свои всплывашки. Успех — плашка
MODx.msg.statusс одним текстом, какsession_extendedу ядра: короткая фраза держится 1,5 с, как у ядра, итог возврата из редактора RealFaviconGenerator с именем профиля — дольше, по длине текста. Предупреждение и ошибка — окноExt.Msgс кнопкой «ОК», заголовком ядраwarningилиerrorи иконкой, которую менеджер красит сам: жёлтый треугольник или красный крестик. В плашку статуса они не годятся: в MODX 3 это зелёный блок с галочкой в четверть экрана, и длинное предупреждение сжималось в нём в узкий столбик, неотличимое от успеха. Текст экранируется: имя профиля, пути и ответ сервера не становятся разметкой. Сообщение, пришедшее, пока открыт вопрос или другое сообщение, ждёт своей очереди, а не подменяет окно. Возврат из редактора с оговоркой показывает только её — она и так начинается с «Набор собран». Пока окно открыто,/и Ctrl+K не срабатывают, после «ОК» фокус возвращается туда, где был. - Если список не загрузился, вместо таблицы видны причина и кнопка «Повторить». Раньше ошибка мелькала только во всплывающем уведомлении, а таблица уверяла «Профилей пока нет» и предлагала создать первый.
- Пока грузится следующая страница или выдача поиска, прежние строки остаются на месте и приглушаются, если ожидание затянулось.
- Подписи полей формы связаны с полями, подсказка и ошибка — через
aria-describedby. Ошибки полей от сервера показываются под самим полем, а мастер возвращается к шагу с картинкой, если ошибка в ней. - Таблица профилей на узком экране прокручивается вбок, а не обрезается.
- Палитра MODX 2 сверена с
index.cssменеджера 2.8.6: текст обычных кнопок#555555(был#556c88— это цвет дерева), ссылки при наведении#297aa7. - Ошибки базовых процессоров профиля — «не указан», «не найден», «не сохранён», «не
удалён» — показываются текстом, а не ключом
easyfavicon.profile_err_*: ядро собирает его изobjectTypeс точкой, а в лексиконе таких ключей не было. Удалены строки лексикона, которые больше нигде не используются: подписи и действия старого грида (easyfavicon_profile_*),easyfavicon_intro_msg,easyfavicon_ui_active_badge,easyfavicon_ui_activate,easyfavicon_ui_superseded. - Ошибки полей формы профиля снова видны под полями: коннектор MODX присылает их в
data, а интерфейс искал вerrors. Из-за этого, например, повтор названия давал общее окно «Запрос не выполнен» вместо «Профиль с таким названием уже существует» под полем.
1.0.0-beta2
- Интерактивная сборка: кнопка «Собрать на RFG» уводит в редактор RealFaviconGenerator и принимает результат обратно через callback.
- Плагин
EasyFaviconнаOnWebPagePrerenderсам вставляет разметку в ``; сниппет остаётся для ручного управления местом вставки. - Поле «Исходное изображение» открывает медиа-хранилище MODX.
- Новое поле профиля
non_interactive_requestпод снимок настроек из редактора (сервис версии0.2.0его не возвращает — поле заводится на вырост). - Новые системные настройки:
interactive_url,auto_inject,auto_inject_profile. - Интерфейс перерисован под палитру менеджера MODX; в строке профиля видна сама фавиконка, редкие действия убраны в меню строки.
- Все тексты интерфейса переехали в лексиконы
easyfavicon_ui_*(EN/RU). - Утилиты Tailwind получили префикс
#easyfavicon-app, а локальный reset вышел из@layer— иначе нелейерный CSS менеджера перебивал наши стили. - Создание профиля стало мастером из двух шагов: картинка → название и каталог. Описание и JSON-редакторы убраны в раскрывающийся блок «Дополнительные настройки», а из мастера можно сразу уйти в редактор кнопкой «Создать и собрать».
- Переключатель активности прямо в строке списка, рядом с кнопками.
- Исправлено: сборка неактивного профиля подменяла живую фавиконку — файлы распаковывались в общий каталог независимо от того, какой профиль активен. Теперь набор выкладывается на сайт, только если профиль активен либо пишет в свой каталог; в остальных случаях он сохраняется и ждёт включения.
- Тексты берутся штатной глобальной
_()менеджера MODX — она же подставляет[[+name]]. Слой доступа к лексикону сократился со 147 строк до 22: дублировать английские строки в коде больше не нужно. - Исправлено: при смене активного профиля браузер продолжал показывать прежнюю
фавиконку. RealFaviconGenerator даёт всем профилям одинаковые имена файлов,
поэтому в разметку добавляется версия профиля (
?v=generated_on). - Переключение на профиль без сохранённого набора больше не проходит молча: в тосте и в подсказке свитча сказано, что на сайте останутся чужие файлы.
- Исправлено: если каталог для архивов недоступен на запись, сборка тихо проходила без сохранения копии — теперь об этом сообщается в интерфейсе.
- Каждая сборка сохраняется целиком: архив профиля лежит в
core/components/easyfavicon/packages/, миниатюра — вassets/components/easyfavicon/thumbs/. При смене активного профиля его набор разворачивается обратно в каталог сайта, иначе на сайте оставалась фавиконка соседнего профиля с тем же каталогом. site.webmanifestдописывается данными сайта после распаковки: сервис отдавал его с заглушкамиMyWebSite/MySiteи безstart_url. Заполняются только пустые поля и заглушки — вписанное в редакторе RFG сохраняется. Переопределяется настройкамиeasyfavicon.manifest_nameиeasyfavicon.manifest_short_name.- Имя сайта и стартовый адрес уходят в манифест и при пересборке без редактора
(
android_chrome.manifest.name,start_url). - Исправлено: файловый менеджер MODX открывался только один раз за загрузку
страницы —
MODx.Browserвыставляет глобальныйMODx.browserOpenи не сбрасывает его; обходим так же, как штатныйMODx.combo.Browser. - Исправлено: индикатор загрузки появлялся на кнопке «Собрать фавиконку» при любом действии со строкой — признак занятости теперь привязан к конкретному действию.
- Исправлено: дата сборки показывалась как 1970-01-01 (
phptypeполя былtimestamp, иtoArray()отдавал строку вместо метки времени).
1.0.0-beta1
- Первый релиз.
- Интеграция с RealFaviconGenerator API v1.
- CMP на Svelte 5 + Vite: профили генерации, редактор
favicon_design, панель результата. - Сниппет
EasyFaviconи чанкtpl.EasyFavicon. - Поддержка MODX 2.8+ и MODX 3.x из одной кодовой базы (
compat.inc.php). - Docker-окружение: MODX 3.2.4/PHP 8.3 и MODX 2.8.6/PHP 7.4 с автоустановкой.



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