Перейти к содержимому

RadicalMart 1.0.0. Стабильная версия. Новогодний релиз

Мы с радостью и гордостью спешим сообщить о выходе RadicalMart 1.0.0 - стабильной версии, которая тщательно протестирована и готова к использованию при создании функциональных и высоконагруженных Интернет-магазинов.

Вышла версия RadicalForm 3.1.6


Вышла новая версия RadicalForm 3.1.6

Вышла новая версия RadicalForm 3.1.6

16 апреля 2026

Это последняя версия плагина, выпущенного для архитектуры Joomla 3 и 4.

Несмотря на то, что Joomla 3 и 4 уже не поддерживаются и их нельзя использовать на новых сайтах, множество уже созданных сайтов сейчас подвергаются атакам усовершенствованных ботов.

Эта версия плагина вводит новый раздел "АнтиСпам", который позволяет бороться с атаками таких ботов по анализу содержимого и времени отправки форм.

Как скачать?

Вы можете просто обновиться до новой версии в интерфейсе обновления Joomla или скачать по прямой ссылке в GitHub.

Скачать с GitHub

Какие версии Joomla поддерживаются?

Поддерживаются Joomla 3 и 4.

Плагин так же будет работать с Joomla 5 с включенным плагином обратной совместимости.

Joomla 6 в этой версии плагина пока не поддерживатся. В ближайшие дни будет выпущена версия плагина с новой архитектурой. Минимальная поддерживаемая версия будет поднята до 5 версии.

Новые версии для 3 и 4 Joomla больше выпускаться не будут.

Страница расширения переехала

Само расширение, как и все последующие расширения компании переехали на сайт radicalmart.ru. Теперь все расширения и новости по ним будут публиковать здесь.

Документация по ним так же будет публиковаться на этом сайте.

Документация RadicalForm

Что нового?

Введенна новая вкладка в настройках плагина "АнтиСпам".

На этой вкладке можно указать сообщение, которое будет выводиться пользователям (или ботам), чье сообщение воспринято как спам.

Можно указать непосредственно сообщение или языковую константу, которую можно переопределить.

Можно указать блокируемые диапазоны задержки перед отправкой формы.

Чтобы лучше понять смысл этой блокировки, нужно увидеть поведение некоторых ботов.

Как мы видим – бот здесь постит сообщение строго в указанное время после загрузки страницы. Можно указать время блокировки для таких сообщений. Причем можно указать несколько диапазонов через запятую.

Например:

0-4, 12-13

Это значит, что если форма отправлена в течение 3 секунд после загрузки страницы, то она будет заблокирована как спам. А так же если форма будет отправлена спустя 12 секунд после загрузки – она тоже будет заблокирована как спам. Это позволит отсечь особо тупых и назойливых роботов.

Черный список IP
Тут особых пояснений не требуется. Одна строка – один IP. Можно указывать не только точный IP, но и подсети с маской (в CIDR-нотации). Примеры: 203.0.113.15 или 198.51.100.0/24. Строки, начинающиеся с #, игнорируются.
Правила блокировки по содержимому

Тут тоже все достаточно очевидно. Можно добавить нужное количество правил блокировки по содержимому полей. Можно использовать простое поле по наличию ключевого слова (например - виагра или wildberries) или же использовать более сложные правила на основе regexp для php.

Готовые примеры полезных правил блокировки с помощью регулярных выражений приведены ниже в отдельном поле.

Что еще нового?

Починили настройку работы телеграм в Joomla 3. Теперь это корректно работает как в Joomla 3, так и в Joomla 4 и 5.

Теперь можно использовать переменную {rfLatestNumber} в теме письма. Это позволяет нумеровать заявки и легко определять в письмах, какое из них относится к какому номеру заявки.

Так же исправлены некоторые визуальные недоработки интерфейса.

Дальнейшее развитие будет уже в новой архитектуре плагина.

Пишите нам в чат телеграм и max.

Вышла версия RadicalForm 4.0.0


Вышла новая версия RadicalForm 4.0.0

Вышла новая версия плагина для создания форм обратной связи RadicalForm 4.0.0

25 апреля 2026

Эта версия плагина наконец-то вышла на новой архитектуре, специально созданной для Joomla 5 и 6.

Устанавливать на Joomla 3 и 4 нельзя! Плагин работать не будет!

Весь функционал старых версий перенесен в эту версию. Работает новый раздел "АнтиСпам", который позволяет бороться с такими ботами за счет анализа содержимого и времени отправки форм.

Инструкция по работе с формой

Как скачать?

Вы можете просто обновиться до новой версии в интерфейсе обновления Joomla или скачать по прямой ссылке в GitHub.

Скачать с GitHub

Какие версии Joomla поддерживаются?

Поддерживаются Joomla 5 и 6.

Плагин работает на Joomla 6 без включенного плагина обратной совместимости. Используется новая архитектура плагинов Joomla.

Благодарность

Хочу выразить огромную благодарность активному участнику нашего Joomla сообщества – Дмитрию Васюкову (@fictionlabs), за то, что сильно ускорил миграцию кода своим Pull Request. Без него бы это заняло значительно больше времени.

Все-таки Open Source помогает в таких ситуациях и упрощает развитие продукта.

Страница расширения переехала

Само расширение, как и все последующие расширения компании, переехали на сайт radicalmart.ru. Теперь все расширения и новости по ним будут публиковаться здесь.

Документация по ним также будет публиковаться на этом сайте.

Репозитарий тоже переехал

Разработка теперь ведется в рамках организации RadicalMart и у репозитария новый адрес.

Новый адрес на GitHub

Что нового?

Введена новая вкладка в настройках плагина "АнтиСпам".

На этой вкладке можно указать сообщение, которое будет выводиться пользователям (или ботам), чье сообщение воспринято как спам.

Можно указать непосредственно сообщение или языковую константу, которую можно переопределить.

Можно указать блокируемые диапазоны задержки перед отправкой формы.

Чтобы лучше понять смысл этой блокировки, нужно увидеть поведение некоторых ботов.

Как мы видим – бот здесь постит сообщение строго в указанное время после загрузки страницы. Можно указать время блокировки для таких сообщений. Причем можно указать несколько диапазонов через запятую.

Например:

0-4, 12-13

Это значит, что если форма отправлена в течение 4 секунд после загрузки страницы, то она будет заблокирована как спам. А так же, если форма будет отправлена спустя 12 секунд после загрузки – она тоже будет заблокирована как спам. Это позволит отсечь особо тупых и назойливых роботов.

Черный список IP
Тут особых пояснений не требуется. Одна строка – один IP. Можно указывать не только точный IP, но и подсети с маской (в CIDR-нотации). Примеры: 203.0.113.15 или 198.51.100.0/24. Строки, начинающиеся с #, игнорируются.
Правила блокировки по содержимому

Тут тоже все достаточно очевидно. Можно добавить нужное количество правил блокировки по содержимому полей. Можно использовать простое поле по наличию ключевого слова (например, виагра или wildberries) или же использовать более сложные правила на основе regexp для PHP.

Готовые примеры полезных правил блокировки с помощью регулярных выражений приведены ниже в отдельном поле.

Блокировка по User-Agent

Среди полей для анализа доступны не только поля формы, но и специальное поле rfUserAgent. Можно использовать его для блокировки по содержимому поля. Особо тупые (или нежелательные) боты легко блокируются по User-Agent.

Что еще нового?

Добавлен новый слой безопасности – теперь при загрузке файлов проверяется CSRF-токен.

Имена полей для загрузки файлов проходят дополнительную очистку.

Причина срабатывания антиспам правил теперь явно указана в заголовках записи в логах. Не обязательно раскрывать блок, чтобы увидеть причину блокировки.

Пишите нам в чат телеграм и max.

Вышла версия RadicalForm 4.1.0


Новая версия RadicalForm 4.1.0

Вышла новая версия плагина RadicalForm 4.1.0

27 апреля 2026

То, о чем так долго говорили большевики просили пользователи, наконец-то свершилось!

Теперь в формах RadicalForm можно использовать поля со множественной загрузкой файлов! Да-да! Теперь пользователю не придется закидывать файлы по одному, один за другим!

А еще – теперь вы сможете принимать уведомления с сайта даже на подземной парковке! А все потому, что мы добавили интеграцию с мессенджером Макс!

Что еще сделано в этом релизе? Читайте в статье!

Инструкция по работе с формой

Как скачать? И как обновиться?

Все по-прежнему максимально просто – если у вас уже установлен RadicalForm на сайте – просто перейдите в раздел обновлений и обновитесь до последней версии.

Если вы хотите установить RadicalForm на новый сайт – можете скачать по прямой ссылке в GitHub или напрямую с сайта.

Какие версии Joomla поддерживаются?

Поддерживаются Joomla 5 и 6. На Joomla 3 и 4 плагин работать не будет!

Плагин работает на Joomla 6 без включенного плагина обратной совместимости.

Что нового?

Поддержка полей со множественной загрузкой файлов

Если раньше пользователь вынужден был загружать файлы один за другим, то теперь он может выбрать сразу несколько файлов для загрузки и загрузить за один раз, ровно так, как он привык это делать на других сайтах.

Что нужно сделать, чтобы это заработало?

Если раньше у вас input для загрузки выглядел примерно так:

<input class="form-control rf-upload-button" name="file" type="file">
То теперь, все что вам нужно сделать – это добавить атрибут multiple="multiple"
<input class="form-control rf-upload-button" multiple="multiple" name="files" type="file">
На этом все – теперь можно загружать несколько файлов за один раз. Все как вы привыкли.

Интеграция с мессенджером Макс

Мы добавили интеграцию с мессенджером Макс. Причем эта интеграция работает как с индивидуальными оповещениями, так и в случае добавления бота в чат. Очень удобно для создания оповещений в рабочем чате.

Я не буду останавливаться на том, как вам зарегистрировать бота Макс – на это есть множество статей в интернете (например, вот эта – на сайте Сайтогон). Все, что вам в итоге нужно получить, — это токен, который надо вставить в соответствующее поле и обязательно сохраните настройки!

Если вы хотите получать сообщения индивидуально от бота – напишите ему любое слово и затем нажмите кнопку "Обновить MAX ID". Еще раз напомню – к этому моменту настройки с токеном уже должны быть сохранены!

Если вы хотите, чтобы бот писал в ваш чат – просто добавьте его в чат и назначьте администратором. Писать никуда не надо – бот сам видит все чаты, куда его добавили.

Дальше работа по сути ничем не отличается от интеграции с телеграм.

Переключатель возможности загрузки файлов

В настройки плагина добавлен переключатель возможности загрузки файлов.

Так как RadicalForm никак не контролирует создание форм, теоретически возможна ситуация, когда недоброжелатель может начать загрузку файлов без вашего ведома. В принципе это не несет никакой опасности, кроме того, что будет занято место на сайте и израсходован лишний трафик.

Однако неприятно увидеть, что место на сайте занято файлами, если у вас в принципе на сайте только форма с кнопкой перезвоните мне, которая в принципе не подразумевает загрузку файлов.

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

На новых установках RadicalForm этот переключатель отключен по умолчанию.

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

Это просто еще один слой безопасности – если вы не пользуетесь загрузкой файлов – отключите его.

Антиспам показывает поле, вызвавшее блокировку

Теперь заголовок Антиспам в логах отправки показывает не только причину блокировки, но и поле, которое его вызвало.

Так можно быстрее сообразить о причине блокировки, не открывая сам блок с сообщением.

Причина срабатывания и главное поле, которое это спровоцировало, теперь позволяет понять, какое из антиспам правил сработало.

Вывод версии плагина в настройках

Теперь очень легко определить какая версия плагина установлена – ее сразу видно на главной вкладке настроек RadicalForm.

Исправлены ошибки

Исправили предупреждение fgetcsv escape deprecation warning в PHP 8.4.

На новых версиях PHP, включая PHP 8.4 и выше, больше не должно появляться warning/notice сообщение, связанное с устаревшим параметром escape в fgetcsv.

Обновили уведомление о ротации логов для Joomla 5 и 6.

Теперь RadicalForm получает данные о следующей очистке логов из планировщика задач Joomla и показывает более точную информацию: сколько дней осталось до очистки и сколько файлов ротации будет сохранено.

Ссылка для настройки ротации теперь ведет в планировщик задач Joomla, где и настраивается эта возможность в актуальных версиях CMS.

На этом все. Пишите нам в чат Telegram и Max. Ставьте лайки и выражайте благодарность.

Вышла версия RadicalMart 1.2.0


Вышла новая версия RadicalMart 1.2.0

01 августа 2023

Сегодня, в начале месяца вышла минорная, но насыщенная новыми функциями версия RadicalMart 1.2.0.

Краткое описание добавленного и изменного функционала в этой статье.

Изменения в оформлении заказа

  • Добавлена проверка изменения состава заказа перед оформлением (см. подробнее на VK)
  • После нажатия на кнопку оформления заказа на экране появляются этапы его прохождения в режиме онлайн. В предыдущем посте это можно посмотреть на видео. (см. подробнее на VK)
  • Добавлена защита от повторного заказа в случае каких-либо ошибок загрузки страницы в процессе оформления заказа

Добавлен новый функционал

  • Добавлена возможность для менеджера сделать скидку к заказ
  • Добавлена возможность отключить микроразметку во всем магазине RadicalMart (на случай использования сторонних расширений)
  • В админке добавлена очень удобная функция, которая позволяет сразу переносить товар в начало или конец списка товаров.
  • Появилась возможность отображения товаров в истинно табличном виде. (см. подробнее на VK)
  • Для производителей товаров создан отдельный макет, который можно выбрать в нужной категории или пункте меню. (см. подробнее на VK)
  • Добавлена возможность вывода товаров в табличном виде и с возможностью группировки по категориям (например для вывода услуг). (см. подробнее на VK)
  • Добавлены новые позиции модулей в страницы категории, корзины, оформления заказа и личного кабинета
Полный список изменений приведен на сайте sovmart.ru

Вышла версия RadicalMart 2.0.0


Вышла новая версия RadicalMart 2.0.0

Вышла новая версия RadicalMart 2.0.0

11 марта 2024

Рады представить версию RadicalMart 2.0.0. Это — большой релиз, включающий в себя новый функционал, улучшения и исправление ошибок, найденных с момента релиза предыдущей версии.

Краткое описание добавленного и изменного функционала в этой статье.

Что нового?

  • Переработка интерфейса панели управления;
  • Функционал плагина полностраничного кеширования и консоли перенесены в системный плагин;
  • Standalone логин;
  • Создание мета-товара из списка товаров;
  • Применение скидок на заказ до и после доставки;
  • Оптимизация производительности на большом кол-ве товаров;
  • Улучшение и стабилизация работы при большой кол-ве одновременных заказов;
  • Команды для cli и исполнения в панели управления;
  • Исправления и улучшения.

Новые триггеры

В версии 2.0.0 внедрено большое кол-во дополнительных триггеров. Полный список изменений RadicalMart доступен в каталоге sovmart.ru.

RadicalMart 2.0.0

Вышли версии RadicalMart 2.2.0 и RadicalMart Express 3.0.1


Вышла новая версия RadicalMart 2.2.0

12 августа 2024

Мы рады представить очередную версию RadicalMart 2.2.0, содержащую в себя новый функционал, а также исправление найденных ошибок, а также RadicalMart Express 3.0.1.

Краткое описание добавленного и изменного функционала в этой статье.

RadicalMart 2.2.0

Добавлен новый функционал

  • Артикул и медиа в получении товаров ProductsModelTrait;
  • Заголовок, артикул, сокращенное описание и медиа мета-товара в вариативности товара;
  • Возможность пустого значения в поле цены;
  • Вход на сайт по коду;
  • Выбор категории для построения хлебных крошек товара;
  • Выбору цены товара для автоматического расчет цен категории и мета-товаров;
  • Уровень доступа для способов доставки и оплаты;
  • Добавлено событие onRadicalMartPrepareCustomerMethodSaveData.

Исправления багов

  • Подключение языков манифеста;
  • Постраничная навигация на странице списка заказов покупателя;
  • Автоматический расчет цен, категории и мета-товаров при сохранении товара.

Полный список изменений RadicalMart доступен в каталоге sovmart.ru.

RadicalMart 2.2.0

Новые версии дополнений

Внедрение нового функционала в версии 2.2.0 ядра магазина повлекло за собой изменения в коде дополнений. Ниже приведён список новых релизов плагинов и пакетов, которые вам нужно скачать и установить после обновления магазина.
RadicalMart Message: Email 2.1.0
Поддержка входа по коду для RadicalMart.
RadicalMart: Uikit 2.2.0
  • Поддержка функций RadicalMart 2.2.0;
  • Переопределения для RadicalMart Shipping: Самовывоз.

Если у вас имеется переопределение данного шаблона, то необходимые изменения по части нового функционала, появившегося в версии RM 2.2.0, вы можете посмотреть на Github и внедрить в своём шаблоне.

Получить новую версию


Версия RadicalMart Express 3.0.1

Express редакция продукта также не стоит на месте и сегодня вышла версия 3.0.1, которая включает в себя небольшой новый функционал.
  • Добавлено событие onRadicalMartExpressPrepareCustomerMethodSaveData.
  • Возможность пустого значения в поле «цены».

Релиз RadicalForm 4.2.0 «Содружество»


Новая версия RadicalForm 4.2.0

Опубликована версия плагина RadicalForm 4.2.0

08 мая 2026

RadicalForm 4.2.0 — важная веха в развитии сообщества, которое формируется вокруг плагина. Многие полагаются на гибкость RadicalForm и умение противостоять атакам ботов. Поэтому в этом выпуске особое внимание уделено разработчикам, которые создают собственные плагины и интеграции для RadicalForm.

Теперь плагины, написанные для RadicalForm, получают новые возможности — можно влиять на отправку сообщений и даже подсвечивать неверно заполненные по мнению плагина поля.

Это открывает новый уровень возможностей: серверная валидация в RadicalForm теперь стала реальностью.

Что еще сделано в этом релизе? Читайте в статье!

Инструкция по работе с RadicalForm

Как скачать? И как обновиться?

Обновление по-прежнему максимально простое: если RadicalForm уже установлен на вашем сайте, откройте раздел обновлений Joomla и установите последнюю версию плагина.

Если вы устанавливаете RadicalForm на новый сайт, скачайте актуальный пакет по прямой ссылке с GitHub или с нашего сайта.

Интеграция со старыми плагинами не должна поломаться. Если что-то не работает — напишите нам в чат Telegram или Макс.

Какие версии Joomla поддерживаются?

Поддерживаются Joomla 5 и 6. На Joomla 3 и 4 плагин работать не будет!

Плагин работает на Joomla 6 без включенного плагина обратной совместимости.

Что изменилось в RadicalForm 4.2.0

В новой версии RadicalForm мы улучшили историю отправок, разделили реальные сообщения и спам, добавили новый способ расширять обработку формы через PHP-плагины и исправили несколько важных ситуаций при загрузке файлов и отправке email.

Главная цель этих изменений — сделать RadicalForm удобнее для администратора: реальные сообщения должны быть на виду, ошибки должны быть понятными, а техническая информация должна помогать в диагностике, а не мешать читать данные формы.

Спам больше не смешивается с сообщениями формы

Раньше все события попадали в один общий лог. Если на сайте было много автоматических отправок, администратору приходилось искать настоящие сообщения среди записей антиспама.

Теперь история реальных отправок и история заблокированных сообщений разделены. В интерфейсе появились отдельные вкладки:

  • Сообщения — реальные отправки формы;
  • Спам — заблокированные отправки и некорректные попытки отправки.

Сообщения, заблокированные антиспамом, и отправки с неверным CSRF-токеном записываются в отдельный файл. Рабочая история сообщений остается чистой, а подозрительные отправки можно смотреть отдельно.

вкладки спам и сообщения

Как следствие — спам-сообщения больше не участвуют в нумерации обычных сообщений. Если последнее реальное сообщение имело номер 27, а после него было заблокировано несколько спам-отправок, следующее реальное сообщение получит номер 28.

Изменено поведение RadicalForm при достижении лимита размера лога

Поведение параметра «Очищать лог при достижении (байт)» также изменено. Раньше при достижении указанного размера текущий лог удалялся. Теперь RadicalForm ротирует лог в формате Joomla: текущий файл становится архивным, а новый лог создается заново.

История сообщений стала компактнее

Интерфейс истории отправленных форм стал компактнее и лучше использует ширину страницы.

история сообщений

Раньше поле истории отображалось как обычное поле настроек Joomla. Из-за этого слева оставалось лишнее пространство под колонку с подписью поля, а сама таблица истории начиналась не от края рабочей области. Теперь история RadicalForm выводится без этой лишней колонки.

Длинные ссылки в сообщениях и ссылках на загруженные файлы теперь отображаются компактно. Вместо того чтобы ломать ширину таблицы, они аккуратно сокращаются в пределах доступного места.

Информация о посетителе по-прежнему позволяет показывать техническую информацию об отправке: адрес страницы, referer, разрешение экрана, заголовок страницы, user agent, время на устройстве пользователя и сколько времени прошло с загрузки страницы до отправки формы.

Но теперь эта информация выводится не вперемешку с данными формы, а в отдельном столбце «Информация о посетителе». Благодаря этому отправленные поля формы остаются в своем столбце, а технический контекст находится рядом, но не мешает читать само сообщение.

В настройках видно включенные плагины RadicalForm

Если на сайте установлены и включены плагины группы radicalform, информация об этом отображается в истории. Это полезно при диагностике: администратор сразу видит, что обработка формы могла быть расширена дополнительными PHP-плагинами.

Так проще понять, почему форма могла быть изменена, заблокирована или обработана не только основным системным плагином RadicalForm.

Учитывайте, что если плагин системный, то он не попадет в список отображаемых. Но это не значит, что он не будет работать.

Email-ошибки теперь понятнее

RadicalForm улучшил логирование ошибок, связанных с отправкой email. Теперь в историю попадают не только ошибки самого вызова отправки письма, но и ошибки подготовки email: добавление получателя, копии, скрытой копии и Reply-To.

Например, если основной email-получатель не заполнен, Joomla может вернуть ошибку:

Invalid address: (to):

А если почтовая функция сервера недоступна, может появиться сообщение:

Could not instantiate mail function.

Такие ошибки теперь отображаются в истории RadicalForm как предупреждения.

история сообщений

Одна отправка — одна запись истории

Обычная запись истории теперь создается только после успешного завершения обработки формы. Если отправка остановилась на email-ошибке, RadicalForm не создает отдельную обычную строку с тем же номером.

Вместо этого появляется одна запись типа WARNING, в которой есть и текст ошибки, и данные отправленной формы.

В заголовке предупреждения сразу видно причину:

WARNING: Invalid address: (to):

Замечание: несовпавший rfTarget сам по себе не считается email-ошибкой

rfTarget может использоваться не только для email, но и для других каналов доставки: Telegram, MAX и других интеграций.

Если у формы задан rfTarget, но для него не найден альтернативный email-получатель, RadicalForm не считает это ошибкой само по себе. Такая форма может быть настроена на отправку через мессенджер или другой канал.

Ошибка фиксируется только тогда, когда email-отправка действительно была подготовлена или запущена и почтовая система Joomla вернула ошибку.

Расширение RadicalForm через PHP-плагины

RadicalForm поддерживает расширение логики отправки формы через плагины группы radicalform. Такие плагины можно использовать для интеграций, дополнительной серверной проверки данных, изменения входящих значений и блокировки отправки формы.

Начиная с новой версии, плагин может не только изменить данные формы, но и запретить отправку, вернув специальный результат.

Legacy-событие

Для совместимости сохранен старый формат события:

onBeforeSendRadicalForm($clearInput, &$input, $params)

$clearInput — очищенный массив данных формы. В нем нет служебных полей RadicalForm вроде url, resolution, uniq, token и т.п.

$input — полный массив входящих данных. Передается по ссылке, поэтому плагин может изменить данные перед дальнейшей обработкой RadicalForm.

$params — параметры плагина RadicalForm.

Пример legacy-плагина:

public function onBeforeSendRadicalForm(array $clearInput, array &$input, $params): ?array
{
    $phone = isset($clearInput['phone']) ? trim((string) $clearInput['phone']) : '';

    if ($phone === '' || !preg_match('/^\+?[0-9\s\-\(\)]{7,20}$/', $phone))
    {
        return [
            'send' => false,
            'message' => 'Телефон заполнен неверно.',
            'field' => 'phone',
        ];
    }

    return null;
}

Новый формат события

Для новых плагинов рекомендуется использовать событие:

onBeforeProcessRadicalForm

Обработчик принимает объект события:

use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\SubscriberInterface;
use Joomla\Plugin\System\RadicalForm\Event\BeforeProcessRadicalFormEvent;

final class MyPlugin extends CMSPlugin implements SubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            'onBeforeProcessRadicalForm' => 'onBeforeProcessRadicalForm',
        ];
    }

    public function onBeforeProcessRadicalForm(BeforeProcessRadicalFormEvent $event): void
    {
        $clearInput = $event->getClearInput();
        $input      = &$event->getInput();
        $params     = $event->getParams();

        $name = isset($clearInput['imya']) ? trim((string) $clearInput['imya']) : '';

        if ($name !== '' && preg_match('/\d/u', $name))
        {
            $event->addResult([
                'send' => false,
                'message' => 'Имя не должно содержать цифры.',
                'field' => 'imya',
            ]);
        }
    }
}

Отказ в отправке и подсветка полей

Чтобы заблокировать отправку формы, плагин должен вернуть или добавить результат с ключом:

'send' => false

Минимальный вариант:

[
    'send' => false,
    'message' => 'Отправка формы запрещена.',
]

Если нужно подсветить конкретное поле формы, добавьте ключ field:

[
    'send' => false,
    'message' => 'Телефон заполнен неверно.',
    'field' => 'phone',
]

Для нескольких полей используйте fields:

[
    'send' => false,
    'message' => 'Проверьте поля формы.',
    'fields' => ['phone', 'email'],
]

На фронтенде RadicalForm найдет соответствующие поля по атрибуту name и добавит к ним CSS-классы ошибки из настройки CSS класс для невалидных полей.

Порядок выполнения событий

При отправке формы RadicalForm вызывает события в таком порядке:

  1. onBeforeSendRadicalForm — legacy-событие.
  2. onBeforeProcessRadicalForm — новый формат события.

Новые плагины видят данные уже после возможных изменений, сделанных legacy-плагинами через $input.

Важно о совместимости

RadicalForm считает отказом только явный результат:

'send' => false

Все остальные ответы плагинов игнорируются:

null
true
[]
['some' => 'data']

Штатная блокировка формы должна выполняться не через исключение, а через результат. Если внешний плагин вызывает исключение или содержит синтаксическую ошибку, RadicalForm записывает ошибку в лог plg_system_radicalform, а в истории такие записи отображаются как ERROR.

Примеры плагинов для тестирования новых событий

Для знакомства с новыми возможностями RadicalForm 4.2.0 мы подготовили два тестовых плагина. Один демонстрирует прежний формат обработки события, второй — новый подход к серверной валидации.

Плагин validatefield

Пример старого формата работы через событие onBeforeSendRadicalForm. Плагин проверяет значение выбранного поля формы по регулярному выражению.

Скачать плагин

Плагин validatename

Пример нового формата работы через событие onBeforeProcessRadicalForm. Плагин показывает, как вернуть ошибку для конкретного поля формы.

Скачать плагин

Тестовые плагины не являются обязательными для установки. Они нужны как демонстрационные примеры для разработчиков, которые хотят создавать собственные проверки и интеграции для RadicalForm.

Ошибки пользовательских PHP-layout больше не ломают отправку формы

Если пользовательский PHP layout RadicalForm случайно выводит текст через echo, print или содержит ошибку, это больше не ломает JSON-ответ формы и не мешает основной обработке отправки.

Такой вывод или ошибка записываются в историю RadicalForm как служебные записи WARNING или ERROR. Причина выводится сразу в заголовке записи, например:

WARNING: Custom layout produced unexpected output
ERROR: Custom RadicalForm layout error

Эти служебные записи не получают номер сообщения rfLatestNumber и не смешиваются с обычными данными формы. Благодаря этому нумерация реальных отправок остается корректной.

Безопаснее обработка имен загружаемых файлов

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

Это помогает избежать странных имен файлов и ситуаций, когда после очистки имени на сервере нечего сохранять.

Файлы больше не смешиваются между отправками

После успешной отправки формы RadicalForm обновляет внутренний идентификатор загрузки файлов. Благодаря этому следующая отправка той же формы получает новый каталог для файлов.

Также после успешной отправки очищается служебный маркер needToSendFiles. Новая отправка не будет ошибочно считать, что к ней относятся файлы из предыдущей отправки.

Сообщения формы показываются средствами Joomla

Стандартный обработчик сообщения после отправки формы по умолчанию теперь использует интерфейс сообщений Joomla вместо обычного alert(). Это делает вывод успешных и служебных сообщений более аккуратным и ближе к стилю сайта.

Для полей с ошибкой также добавлены Bootstrap-классы по умолчанию: это помогает формам выглядеть корректнее в современных шаблонах Joomla.

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

Обновлен установочный скрипт RadicalForm: сигнатуры методов приведены к более современному виду, чтобы избежать предупреждений совместимости в новых версиях PHP.

Релиз RadicalForm 4.2.4 «UTM-метки»


Новая версия RadicalForm 4.2.4

RadicalForm 4.2.4: UTM-метки в заявках Joomla

28 мая 2026

RadicalForm 4.2.4 добавляет поддержку UTM-меток в заявках. Плагин может сохранить рекламные параметры из URL в сессии Joomla и передать их вместе с данными формы в момент отправки.

Это помогает не терять источник обращения: даже если пользователь перешел по нескольким страницам сайта или UTM-метки остались только в адресной строке, RadicalForm сможет добавить их к заявке.

В настройках можно включить отслеживание UTM-меток, задать время их хранения и указать список разрешенных параметров.

Идея и первоначальная реализация принадлежат Сергею Лебедеву (@Cavedesigner)

Подробности — ниже в статье.

Инструкция по работе с RadicalForm

Чтобы понимать путь пользователя и различать, откуда он пришел на сайт, давно используются UTM-метки. Я еще помню времена, когда в "Бизнес Молодости" их называли реферальными хвостами и подавали почти как сакральное знание. Сейчас UTM-метки уже стали обычным стандартом веб-аналитики.

Но есть важный нюанс: UTM-метки находятся в адресной строке страницы, а не в самой форме. Поэтому даже если пользователь отправляет форму прямо со страницы с UTM-метками, эти параметры не попадут в заявку автоматически.

А если человек сначала открыл посадочную страницу, затем перешел в каталог, почитал описание услуги, вернулся на главную, открыл контакты и только потом оставил заявку, исходные параметры из адресной строки тем более будут потеряны.

В результате к моменту конверсии легко потерять понимание, какая реклама, кампания или площадка привела пользователя на сайт.

Именно для этого в RadicalForm появилась поддержка UTM-меток. Плагин сохраняет разрешенные UTM-параметры в сессии Joomla и передает их вместе с данными формы в момент отправки заявки.

В этом обновлении мы постарались сделать механику гибкой: можно включить или отключить сбор меток, настроить срок хранения и указать, какие именно параметры разрешено сохранять.

Как скачать? И как обновиться?

Если RadicalForm уже установлен на вашем сайте, откройте раздел обновлений Joomla и установите последнюю версию плагина.

Если вы устанавливаете RadicalForm на новый сайт, скачайте актуальный пакет со страницы релизов на GitHub или с нашего сайта.

Обновление не требует изменения существующих форм. Новая функция отключена по умолчанию и начинает работать только после включения в настройках плагина.

Какие версии Joomla поддерживаются?

Поддерживаются Joomla 5 и 6. На Joomla 3 и 4 плагин работать не будет!

Плагин работает на Joomla 6 без включенного плагина обратной совместимости.

Что изменилось в RadicalForm 4.2.4

Главное изменение этой версии — поддержка UTM-меток для форм обратной связи. RadicalForm научился собирать маркетинговые параметры из адресной строки, хранить их во время визита пользователя и добавлять к данным отправленной формы.

UTM-метки теперь можно передавать вместе с заявкой

Если посетитель пришел на сайт по ссылке с параметрами вроде:

?utm_source=yandex&utm_medium=cpc&utm_campaign=spring

RadicalForm может сохранить эти значения и подставить их при отправке формы. В результате в письме, истории отправок и CSV-экспорте появятся дополнительные поля:

  • utm_source
  • utm_medium
  • utm_campaign
  • utm_term
  • utm_content

Список параметров можно изменить в настройках плагина.

Новая настройка: Отслеживать UTM-метки

В настройках RadicalForm появился переключатель Отслеживать UTM-метки. По умолчанию он выключен.

После включения RadicalForm начинает проверять URL страницы на наличие разрешенных UTM-параметров. Если такие параметры найдены, они сохраняются в сессии Joomla.

Это позволяет сохранить источник перехода даже тогда, когда пользователь сначала открыл посадочную страницу, потом перешел в другой раздел сайта и только после этого отправил форму.

Можно настроить срок хранения UTM-меток

Добавлена настройка Время хранения UTM-меток. Значение указывается в минутах.

  • 0 — хранить метки до окончания текущей сессии Joomla;
  • число больше 0 — использовать метки только в течение указанного времени.

Например, если указать 60, UTM-метки будут считаться актуальными в течение одного часа с момента фиксации.

Это важно, потому что современные браузеры могут восстанавливать сессионные cookie после закрытия и повторного открытия браузера. Поэтому поведение "до окончания сессии" не всегда совпадает с ожиданием "до закрытия браузера". Новый параметр позволяет задать более предсказуемое время жизни UTM-данных.

Разрешенные UTM-метки

В настройке Разрешенные UTM-метки можно указать, какие GET-параметры RadicalForm должен сохранять.

По умолчанию используются стандартные параметры:

utm_source,utm_medium,utm_campaign,utm_term,utm_content

Если в вашей рекламе используются дополнительные метки, их можно добавить в этот список. Например:

utm_source,utm_medium,utm_campaign,utm_term,utm_content,utm_id

RadicalForm сохраняет только параметры из разрешенного списка. Это защищает историю отправок от случайных или лишних GET-параметров.

В заявке видно время фиксации UTM

Если UTM-метки были добавлены к форме из сессии, RadicalForm также передаст поле:

utm_created_at

В нем хранится дата и время, когда UTM-метки были зафиксированы. Время выводится с учетом часового пояса сайта, указанного в настройках Joomla.

Это помогает понять, когда именно пользователь пришел по рекламной ссылке, особенно если форма была отправлена не сразу.

Если в форме уже есть скрытые UTM-поля

Если в HTML-форме уже есть поля с именами UTM-параметров, RadicalForm не будет перезаписывать их значениями из сессии.

Например, если в форме есть скрытое поле utm_source, его значение будет иметь приоритет над сохраненным значением из сессии.

Что важно учитывать

UTM-метки сохраняются в сессии Joomla. Если срок хранения установлен в 0, фактическое время жизни зависит от настроек сессии Joomla, поведения браузера и включенного механизма поддержания сессии RadicalForm.

Если нужно строго ограничить актуальность UTM-данных, укажите конкретное время хранения в минутах.

Также учитывайте, что UTM-метки попадут в письмо и историю как обычные поля формы. Если вы используете собственные шаблоны сообщений или обработчики RadicalForm, эти поля можно обработать так же, как любые другие данные формы.

Для разработчиков

UTM-метки добавляются в данные формы до вызова событий обработки RadicalForm. Это значит, что плагины группы radicalform могут читать эти значения и использовать их в своей логике.

Доступны оба механизма расширения:

  • onBeforeSendRadicalForm — legacy-событие;
  • onBeforeProcessRadicalForm — новый формат события.

Например, внешний плагин может использовать utm_campaign для выбора канала доставки, изменения темы письма или дополнительной записи в CRM.

Итог

RadicalForm 4.2.4 делает работу с рекламными источниками проще: форма может получать UTM-метки даже после переходов пользователя по сайту, а администратор может управлять сроком хранения и списком разрешенных параметров.

Обновляйтесь через Joomla или скачивайте новую версию со страницы релизов.