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

Статические страницы

RadicalForm changelog

История версий (changelog) плагина RadicalForm

Актуальная версия 4.2.4

Скачать можно здесь:
Получить поддержку и пообщаться в дружном сообществе можно здесь:
Ознакомиться с инструкцией по работе с RadicalForm можно тут:

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


История версий:

Версия 4.2.4 (28.05.2026)

  • Added

    Добавлена поддержка UTM-меток: RadicalForm может сохранять и передавать параметры рекламных переходов вместе с данными формы.
  • Changed

    Улучшены настройки отслеживания UTM-параметров и их обработка при отправке формы.

Версия 4.2.3 (21.05.2026)

  • Fixed

    Исправлены формулировки английской локализации.
  • Changed

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

Версия 4.2.2 (15.05.2026)

  • Fixed

    Исправлено обновление списка получателей MAX-бота с учетом маркеров обновления.
  • Fixed

    Исправлено DNS-разрешение при работе Telegram через SOCKS5-прокси: используется удаленное разрешение имен через socks5h.

Версия 4.2.1 (13.05.2026)

  • Fixed

    Исправлено отображение истории RadicalForm и диагностика логов.
  • Changed

    Уточнены ссылки на инструкцию по использованию в README.

Версия 4.2.0 (08.05.2026)

  • Added

    История реальных отправок и история заблокированных сообщений разделены на отдельные вкладки: сообщения и спам.
  • Changed

    Спам-сообщения больше не участвуют в нумерации обычных сообщений формы.
  • Changed

    При достижении лимита размера лога RadicalForm выполняет ротацию логов в формате Joomla вместо удаления текущего файла.
  • Changed

    Интерфейс истории отправленных форм стал компактнее: данные формы и техническая информация о посетителе выводятся в отдельных столбцах.
  • Added

    В истории отображаются включенные плагины группы radicalform, что упрощает диагностику дополнительной обработки формы.
  • Fixed

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

    Добавлено новое событие onBeforeProcessRadicalForm для расширения обработки формы через PHP-плагины.
  • Added

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

Версия 4.1.0 (27.04.2026)

  • Added

    Добавлена поддержка полей со множественной загрузкой файлов через атрибут multiple.
  • Added

    Добавлена интеграция с мессенджером MAX для индивидуальных уведомлений и уведомлений в чатах.
  • Added

    В настройки добавлен переключатель, который позволяет полностью отключить загрузку файлов, если она не используется на сайте.
  • Changed

    Заголовок антиспама в логах показывает не только причину блокировки, но и поле, вызвавшее срабатывание правила.
  • Added

    Версия установленного плагина теперь отображается на главной вкладке настроек RadicalForm.
  • Fixed

    Исправлено предупреждение PHP 8.4, связанное с устаревшим параметром escape в fgetcsv.
  • Changed

    Обновлено уведомление о ротации логов для Joomla 5 и 6: данные берутся из планировщика задач Joomla.

Версия 4.0.0 (25.04.2026)

  • Changed

    Плагин переведен на новую архитектуру Joomla 5 и 6. Joomla 3 и 4 этой веткой больше не поддерживаются.
  • Added

    Весь функционал старых версий перенесен в новую ветку RadicalForm 4.
  • Added

    Добавлена вкладка АнтиСпам с настройками сообщения блокировки, диапазонов времени отправки, черного списка IP, правил по содержимому и User-Agent.
  • Added

    При загрузке файлов теперь проверяется CSRF-токен.
  • Changed

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

    Причина срабатывания антиспам-правил явно указывается в заголовках записей логов.
  • Changed

    Страница расширения и разработка переехали в инфраструктуру RadicalMart.

Версия 3.1.6 (18.04.2026)

  • Added

    Последняя версия ветки для архитектуры Joomla 3 и 4 получила новый раздел АнтиСпам.
  • Added

    Добавлены правила антиспама по времени отправки формы и содержимому полей для защиты уже работающих сайтов от новых ботов.
  • Changed

    Эта версия завершает поддержку старой архитектуры плагина перед переходом RadicalForm 3 на Joomla 5 и 6.

Версия 3.1.5 (10.05.2024)

Added

добавлена совместимость с Joomla 5.

Версия 3.1.4 (09.10.2023)

  • Fixed

    Исправлены предупреждения для файла Warning: filemtime(): stat failed
  • Fixed

    Исправлено поведение кнопки previous для мультишаговых форм (квизов)

Версия 3.1.2 (26.06.2023)

Fixed

Исправлены предупреждения, которые появляются при работе на php 8.2

Версия 3.1.1 (21.06.2023)

Changed

Это обновление касается только пользователей RadicalForm Elements. Для них изменено поведение многошаговых форм – оно приведено в соответствии с требованиями Yootheme Pro 4

Версия 3.1.0 (24.01.2023)

  • Added

    добавлена совместимость с Joomla 4. Исправлен внешний вид и поведение в админке
  • Added

    удалена зависимость от jQuery в админке сайта
  • Added

    добавлен перехватчик ошибок для внешних плагинов и кастомного кода. Теперь в случае возникновения ошибки в кастомном плагине или коде radicalform не будет падать.
  • Fixed

    удалена интеграция с мессенджером диалог - мессенджер стал закрытым и не работает с частными клиентами
  • Fixed

    внешние косметические изменения
  • Fixed

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

    внесены изменения улучшающие общую безопасность плагина

Версия 3.0.5 (24.09.2021)

  • Fixed

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

    Исправлена совместимость с мультисайтингом

Версия 3.0.4 (25.07.2021)

Added

Добавлена совместимость с новой версией RadicalForm Elements

Версия 3.0.3 (27.06.2021)

  • Fixed

    Совместимость с Yoothem Pro билдером. При определенных условиях выскакивало постоянно всплывающее окно с сообщением об ошибке.

  • Fixed

    Косметические изменения инсталляционного сообщения

Версия 3.0.2 (17.06.2021)

  • Fixed

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

  • Fixed

    Если в качестве CSS классов ошибок использовано несколько классов - скрипт работал некорректно и невозможно было удалить сообщение об ошибке при загрузке корректного файла

Версия 3.0.1 (20.12.2020)

  • Added

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

  • Added

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

  • Added

    теперь поддержание сессии пользователя не требует загрузки дополнительных скриптов – этим занимается основной скрипт Radical Form

  • Added

    записывается и передается в качестве дополнительной следующая информация – время отправки формы на устройстве пользователя (может отличаться из-за разных часовых поясов), а так же через какое время после загрузки была отправлена форма

  • Added

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

  • Added

    заложена основа для интеграции RadicalForm с билдером форм для Yootheme Pro

  • Fixed

    исправлена ошибка с неверным подсчетом количества полей не имеющих имени (не учитывались textarea)

Версия 2.7.1 (11.12.2020)

Fixed

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

Версия 2.7.0 (08.12.2020)

  • Added

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

  • Fixed

    в теме письма теперь можно использовать множественные поля для вставки из формы

  • Fixed

    исправлена работа формы, если Joomla установлена в подпапку на сервере

Версия 2.6.3 (01.09.2020)

  • Fixed

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

  • Fixed

    при переносе архива сайта между разными системами форма продолжает корректно функционировать

Версия 2.6.2 (28.08.2020)

  • Fixed

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

  • Fixed

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

  • Fixed

    блокируется вывод любых текстовых, html и svg файлов, которые потенциально могут привести к возможной XSS атаке

  • Fixed

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

  • Fixed

    так как в UNIX системах отсутствует дата создания для папок и файлов, было принято решение в качестве даты использовать имя папки (оно привязано к UNIX time). Теперь очистка старых папок с загруженными файлами в системе работает более корректно и предсказуемо.

Версия 2.6.1 (16.08.2020)

  • Added

     ссылки в истории отправленных форм стали кликабельными

  • Added

    добавлено графическое отображение свободного пространства в хранилище и во всей системе

  • Fixed

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

  • Fixed

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

Версия 2.6.0 (12.08.2020)

  • Added

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

  • Fixed

    скрипт работы с телеграм в админке переписан для избавления зависимости от jquery

  • Fixed

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

Версия 2.5.1 (29.07.2020)

  • Added

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

  • Added

    добавлена возможность вывода сообщений об ошибках отдельным скриптом JS

Версия 2.5.0 (15.07.2020)

  • Added

    добавлена совместимость с системой ротации логов Joomla

  • Fixed

    более корректное преобразование параметров плагина для js, решающее проблемы с многострочными текстами для сообщений после отправки формы

Версия 2.4.0 (22.06.2020)

  • Added

    добавлена возможность экспортировать историю отправленных форм в CSV

  • Added

    добавлена возможность отключить вывод IP в переменную JS

Версия 2.3.5 (19.06.2020)

Fixed

если rf-file-names список не пуст изначально – файлы не отправлялись

Версия 2.3.4 (04.06.2020)

Fixed

русская буква "с" заменена на "c" латинское в именовании одного класса

Версия 2.3.2 (07.03.2020)

Fixed

исправлен notice при отсутствии Form ID в форме

Версия 2.3.1 (06.03.2020)

Fixed

при отключенном показе TargetID его номер показывался в отправленных данных

Версия 2.3.0 (04.03.2020)

  • Changed

    облагорожена форма вывода таблицы
  • Added

    добавлен идентификатор формы
  • Added

    в таблицу добавлена возможность вывода TargetID
  • Added

    добавлена сквозная нумерация в истории отправленных форм
  • Added

    добавлена интеграция с Verbox
  • Added

    добавлено напоминание о необходимости сохранить настройки при их изменении
  • Added

    в лог-файл добавлена информация об устройстве пользователя
  • Fixed

    исправлены warning в логах сайта
  • Fixed

    исправлены ошибки в языковых константах

Версия 2.2.4 (19.02.2020)

Fixed

в английском языковом файле отсутствовала одна переменная

Версия 2.2.3 (17.02.2020)

  • Added

    код javascript минифицирован
  • Added

    загрузка скрипта производится асинхронно (добавлен тег async)
  • Added

    более информативное отображение ошибок, которые могут произойти в пользовательском php скрипте или в процессе работы плагина
  • Added

    добавлен changelog на сайт
  • Fixed

    При выборе корректного значения для элементов select не сбрасывалось в исходное состояние ошибки

Подробнее

ReVars

ReVars


Шорт-коды, быстрый поиск и замена текста, переменных и использование utm-меток в любом месте сайта. Добавление своего кода в любое место сайта.
Как это работает наглядно:

В чем отличие от других?

Скорость!

Плагин не тормозит!
Так как это системный плагин и он исполняется даже в случае включенного кеша, его основная задача – исполниться максимально быстро и не потреблять ресурсы сервера.
Достигается все это за счет тщательно продуманного кода и использования стандартной версии поиска и замены, вместо регулярных выражений, которые бесконтрольно расходуют ресурсы сервера и замедляют его работу.

Вложенность!

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

Гибкость!

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

Языковые переменные!

Теперь языковые переменные можно использовать не только в тексте статьи, но и в любом месте сайта. Даже внутри javascript кода на странице или модальных окнах.

UTM метки способы изменить текст!

С помощью UTM меток можно менять текст на странице. Это идеально подходит для лендингов и продвижения сайтов с помощью контекстной рекламы.

Как это работает?

Переменные на сайте

Можно использовать переменные в традиционном формате плагинов Joomla {VAR_IMYA} и использовать вложенность, чтобы можно было в дальнейшем поменять номер телефона на всем сайте из одного места.

Вложенность переменных

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

Например, можно завести переменную {VAR_CITY} со значением MSK, а отдельно хранить городские телефоны: {VAR_PHONE_MSK}, {VAR_PHONE_SPB}, {VAR_PHONE_EKB}. На странице при этом можно использовать универсальную конструкцию {VAR_PHONE_{VAR_CITY}}.

При первом раскрытии Revars заменит {VAR_CITY} на MSK, и в тексте получится новое имя переменной: {VAR_PHONE_MSK}. При следующем раскрытии уже оно будет заменено на нужный телефон для Москвы.

Так можно делать один шаблон страницы для разных городов: меняется только базовая переменная {VAR_CITY}, а телефоны, адреса, ссылки на мессенджеры, подписи и другие городские данные подтягиваются автоматически по собранному имени переменной.

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

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

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

В текущей логике Revars удобный порядок такой: сначала объявляем базовые переменные, например {VAR_PHONE_MAIN}, {VAR_PHONE_LINK} и {VAR_DOMAIN}, а ниже объявляем составную переменную {VAR_CONTACT_BLOCK}, которая использует эти значения. Перед заменой Revars разворачивает список переменных, поэтому сначала подставляется составной блок, а затем в этом же проходе раскрываются базовые переменные внутри него.

Языковые константы

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

UTM метки

Можно использовать UTM метки, чтобы подстроить вывод сайта под текущий тип контекстного объявления. Текст заголовка можно менять в зависимости от переданной переменной.
В самом простейшем случае вам достаточно указать открывающий и закрывающий теги. Содержимое UTM метки будет вставлено между ними. При сравнении требуется точное соответствие тегам, вплоть до количества пробелов.
Если же внутри вашего тега есть вложенные теги (например span), их можно указать в качестве дополнительных – они будут вставлены внутрь тега и обернут содержимое UTM метки.
Строго говоря, тег не обязательно должен быть тегом – поиск осуществляется по точному соответствию и таким образом можно для поиска указать часть тега, если остальная меняется. Таким образом можно получить поведение аналогичное поиску по регулярному выражению. Можно, например, начало тега, которое однозначно позволяет его найти на странице выделить в колонку открывающего тега, а его завершающую часть, поместить в колонку дополнительного тега.
Работает это так: посетитель открывает страницу со ссылкой, в которой есть GET-параметр, например https://site.ru/?utm_ya=skidka. Revars смотрит параметры текущего запроса и сравнивает их с UTM-метками, которые вы указали в настройках плагина.
В поле Имя UTM метки нужно записать имя параметра без вопросительного знака и без значения. Для примера выше это будет utm_ya. Если на страницу пришло значение skidka, плагин может подставить его в нужное место страницы.
Дальше вы указываете, где именно на странице надо заменить текст: задаете открывающий тег и закрывающий тег. Revars ищет первое точное совпадение открывающего фрагмента, затем первое точное совпадение закрывающего фрагмента после него, и заменяет содержимое между ними значением из UTM-метки.
Например, если на странице есть заголовок <h1>Купить окна</h1>, можно указать открывающий тег <h1>, закрывающий тег </h1>, а в ссылке передать ?utm_title=Окна со скидкой. Тогда посетитель увидит заголовок, подстроенный под рекламное объявление.
Если внутри заменяемого места нужен дополнительный HTML, используйте поля дополнительных тегов. Они не участвуют в поиске, а просто добавляются вокруг значения UTM. Так можно, например, обернуть подставленный текст в <span> и сохранить нужную верстку.
Поле Разрешённые значения помогает не принимать любые значения подряд. Если список заполнен, Revars подставит UTM только при точном совпадении с одной из строк. Это удобно для заранее подготовленных вариантов: skidka, sale, moscow и так далее.
Важно: значение UTM очищается от HTML-тегов и управляющих символов, ограничивается по длине в 512 символов и экранируется для вывода в HTML. Поэтому такую подстановку безопаснее использовать как обычный текст на странице, а не внутри href, src, style или script.
Практический сценарий простой: создаете несколько рекламных ссылок с разными UTM-значениями, добавляете в Revars правила для нужных заголовков или фраз, и один лендинг начинает показывать разные тексты под разные объявления без копирования страниц.

Неограниченная гибкость применения

В качестве примера рассмотрим проблему обновления изменного файла custom.css на компьютерах клиентов.
Чтобы файл обновился – нам нужно изменить его версию в get-параметре. То есть нужно сделать так, чтобы строка /templates/yootheme_hikashop/css/custom.css?2.5.8 превратилась в /templates/yootheme_hikashop/css/custom.css?2.5.99
Ну что же, делаем вот так:
И вот результат, которого мы хотели добиться!
А дальше полет фантазии в применении плагина ограничивается только вашей фантазией!

Расширяемость за счет плагинов

Можно добавлять свои переменные, которые будут работать именно так, как вам нужно. Бывает что нужно добавить всего пару строчек кода на сайт в нужное место. Это именно тот случай, когда собственный плагин подойдет лучше всего!
Особого знания программирования не требуется! Мы уже все сделали за вас! Возьмите готовый архив плагина и поменяйте в нем всего пару строк, которые вам нужны.
В качестве примера этот плагин добавляет три новых переменных, которые выводят текущий год, месяц и день – {VAR_YEAR}, {VAR_MONTH}, {VAR_DAY}.
С их помощью можно, например, добавить фразу перед прайслистом о его актуальности – и там будет всегда стоять текущая дата.
Вам нужно поменять имя переменной и то действие, которое вы хотите ей назначнить.

Подробнее

RadicalForm


RadicalForm для Joomla – профессиональная ajax форма обратной связи для Joomla с антиспамом

RadicalForm — форма обратной связи для Joomla без ограничений. Полная совместимость с любыми расширениями, AJAX-обработка и встроенная защита от ботов.

Плагин распространяется по принципу "As Is", "как есть". Поддержка оказывается индивидуально, на основе запросов. Возможна платная и бесплатная поддержка – все зависит от ситуации. Разумные предложения в чате Telegtram или Max могут быть реализованы. Все согласуется с автором.

Системные требования

  • Минимальная версия PHP

    8.2
  • Минимальная версия Joomla

    5.2

История изменений

Просмотреть историю версий RadicalForm можно по ссылке:

RadicalForm Changelog

Что умеет плагин

  1. Это бесплатный плагин.
  2. Работает в любом месте сайта, нет никаких ограничений. (актуально для различных конструкторов сайтов, интернет магазинов и т.д.)
  3. Это аякс плагин.
  4. Прекрасно работает во всплывающих окнах. Есть возможность их закрывать после отправки формы.
  5. Можно удобно вставлять цели яндекс метрики в интерфейсе плагина.
  6. Количество форм обратной связи на странице не ограничено! (удобно для лендингов)
  7. Можно отправлять фото и другие файлы (контроль вложений есть).
  8. Полей для отправки вложений может быть несколько.
  9. Корректно работает с кешированием Joomla.
  10. Есть антиспам и фильтрация ботов по поведенческим факторам, что позволяет избежать применения капчи.
  11. Интеграции: Telegram, Verbox, Jivosite.
  12. Используется встроенная возможность джумлы делать многоязычные формы (для каждого языка свою)
  13. Есть история отправленных форм
  14. Есть функция выбора адресата для каждой формы
  15. Возможно использовать в качестве кнопки "Заказ в один клик" в интернет магазинах и других продающих страницах
  16. Реализована вставка любого поля формы или комбинации полей в тему письма
  17. Предусмотрена валидация HTML5 полей формы
  18. Есть возможность изменения поля Reply To
  19. Корректно работает с полями со множественными значениями (checkbox, select multiple)
  20. Есть возможность переопределения шаблона писем
  21. Можно интегрировать свой php код с любой формой
  22. Предусмотрена система плагинов для расширения функциональности RadicalForm

Оглавление

Как вывести форму обратной связи на экран?

С помощью традиционных тегов <form> и <input> (можно обойтись и без традиционного тега <form>).

Вы устанавливаете плагин RadicalForm и затем в любом месте свой страницы вставляете традиционные HTML теги формы обратной связи. Три условия:

  1. Форма должна находиться внутри тега <form> (или внутри любого тега с CSS классом rf-form – это позволяет встраивать форму внутрь формы, чего не умеет никто другой и также облегчает борьбу со спамом).
    Никаких атрибутов action или еще каких-то назначить не надо (это все таки аякс форма).
  2. Для кнопки нужно назначить класс rf-button-send (естественно классов может быть несколько)
  3. Каждый тег input должен иметь атрибут name
    (на самом деле это общее правило для всех форм, но надо уточнить этот факт, так как является распространенной ошибкой забыть указать имя в input)

Примечание: если хотите, чтобы какие-то поля в форме были, но их значение не требуется вам для передачи – можете просто не указывать им атрибут name.

Для простейшей формы обратной связи из одного поля код будет выглядеть так:
<form>
<input class="uk-input required" name="phone" placeholder="Введите свой номер телефона..." type="text">
<button class="uk-button rf-button-send">Заказать звонок</button>
</form>

Примечание: не забудьте назначить атрибут name для тега input! Иначе ничего работать не будет!

Выглядит это так (можно нажимать):

Класс required предназначен для обозначения обязательных полей. Если это поле будет не заполнено - плагин ему назначит css класс, который предназначен для отображения неверно заполненных полей. Этот класс естественно можно менять в настройках плагина.

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

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

Что нужно настроить после установки плагина?

Обязательно укажите email, куда должна отсылаться почта плагином. Укажите CSS классы для неверно заполненных полей в соответствии с вашим шаблоном. Если используется yootheme - можно оставить как есть. Класс uk-animation-shake помогает визуально выделить незаполненные поля. Настройте код Javascript #2 для того, чтобы определить что должен делать плагин после успешной отправки формы. По умолчанию стоит alert(rfMessage), но это не очень хорошо. Для шаблонов на основе UIKit хорошо подойдет UIkit.modal.alert(rfMessage);

Имена полей и перевод на нужный вам язык

В самом письме имена полей будут теми же самыми, которые были указаны в атрибуте name тега input. Конечно для конечного пользователя сайта это не очень хорошо. В плагине предусмотрена возможность переопределить имена, которые будут фигурировать в самом письме. Для этого достаточно воспользоваться стандартным механизмом Joomla для переопределения языковых констант.

Например, если у вас поле ввода выглядит так:

<input class="uk-input required" name="phone" placeholder="Введите свой номер телефона..." type="text">

То вам достаточно перейти в раздел "Языки -> переопределение констант" и создать новую константу PHONE.

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

Тогда перевод ваших языковых переменных отобразится и в истории отправленных сообщений в настройках плагина.

Что обозначают Javascript #1, Javascript #2 и Javascript #3? Зачем они нужны?

В настройках плагина есть поля, обозначенные как Javascript #1, Javascript #2 и Javascript #3. По умолчанию после отправки формы вызывается код скрипта #2. При первоначальной установке плагина в коде Javascript #2 стоит просто alert(rfMessage). Этот код можно поменять на тот, который вам больше подходит. Для тем на основе yootheme pro можно прописать UIkit.modal.alert(rfMessage);

Каждый из скриптов при вызове получает текст сообщения с именем rfMessage и ссылку на кнопку, которая была нажата для отправки формы с именем here .

Зачем это нужно?

Всплывающие окна

Предположим, вам требуется закрыть то всплывающее окно, которое было открыто для вывода формы. Например, на сайте есть кнопка "Заказать обратный звонок". Ее нажали и было выведено модальное окно с формой обратной связи. Человек ее заполнил и нажал кнопку "заказать".

Нужно чтобы всплывающее окно было закрыто и затем выведено сообщение "Сообщение отослано".

Задаем код для Javascript #1

UIkit.modal(document.querySelector("#callback")).hide();

А в саму кнопку отправки формы добавляем такой параметр: data-rf-call="12" , который обозначает, что после отправки формы обратной связи нужно вызвать Javascript #1, а затем Javascript #2.

Итого, сама кнопка отправки заявки примет вот такой вид:

<button class="uk-button uk-button-primary rf-button-send" data-rf-call="12">Отправить заявку</button>

Так как внутри каждого окошка можно вставить сколько угодно команд Javascript, то по идее 3 окошек со скриптами должно хватать. Но если понадобится — пишите - расширим хоть до 9.

Javascript #0. Код, который вызывается перед отправкой формы

Эту форму обратной связи можно удобно использовать в любом интернет магазине в качестве кнопки "Купить в один клик". Для того чтобы форма могла передать название товара или его артикул, требуется выполнить дополнительный код, который исполняется перед отправкой формы. Его можно разместить в окошке с названием Javascript #0 и вызвать с помощью параметра data-rf-call="02".

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

Итак, добавим в окошко Javascript #0 такой скрипт:

var art = document.querySelector("#hikashop_product_code_main").textContent; here.insertAdjacentHTML('afterend', '<input name="artikul" value="'+art+'" type="hidden">');

Этот код добавит в поля формы еще одно поле с нашим артикулом товара.

Еще раз напомню — не забудьте указать параметр data-rf-call="02" в кнопке отправки:

  <button class="rf-button-send uk-button" data-rf-call="02" >Send</button>

Аналогичным образом можно получить и другие параметры товара.

Если нужно предотвратить отправку формы, можно использовать возвращение значения false при исполнении Javascript #0.

return false;

Как изменить сообщение, которое появляется после отправки формы?

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

Как задать индивидуальное сообщение, которое появляется после отправки для каждой формы?

Если нужно индивидуальное сообщение для каждой формы — используйте механизм индивидуальных ява-скриптов. При вызове Javascript #2 можно задать свое сообщение или дополнительную логику, которая будет выводить нужное вам сообщение. Можно для каждой формы выбрать свой ява скрипт с индивидуально заданным текстом. Или же можно генерировать сообщение на основе имени формы или страницы. Можно добавить скрытое поле и выводить сообщение из него. Одним словом — пространство для маневра и возможность задать нужные параметры ничем не ограничены!

Давайте рассмотрим такой вариант подробнее.

Предположим, что мы хотим для одной формы выводить сообщение "Мы вам перезвоним" вместо "Ваше сообщение отправлено".

Как это сделать?

Задаем Javascript #3:

UIkit.modal.alert("Мы вам перезвоним");

Затем для кнопки отправки задайте параметр data-rf-call="3"

В результате кнопка будет выглядеть так:

<button class="uk-button uk-button-primary rf-button-send" data-rf-call="3">Отправить заявку</button>

Ну вот и все. После отправки формы будет вызван яваскрипт #3, который и выведет указанное сообщение.

Если вам нужно чтобы для каждой формы можно было передавать индивидуальное сообщение - можно немного изменить яваскрипт #3 таким образом, чтобы он считывал например параметр data в кнопке, в котором можно будет передать сообщение.

UIkit.modal.alert( String(here.dataset.rfText));

Теперь если в кнопку добавить такой параметр - data-rf-Text, то в нем можно указать индивидуальную тему для каждой формы:

<button class="uk-button uk-button-primary rf-button-send"
data-rf-text="Мы вам перезвоним" data-rf-call="3">Отправить заявку</button>

Достижение целей в Яндекс Метрике

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

Например так:

UIkit.modal.alert(rfMessage);    ym(XXXXXXX, 'reachGoal', 'ZAKAZ');

Вместо XXXXXXX поставьте номер своего счетчика Яндекс метрики.

Тема письма

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

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

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

Тогда тема письма должна выглядеть так:

"Заказ на сайте. Телефон: {phone}"

Здесь phone — это атрибут name одного из ваших полей ввода. Например, такого:

<input name="phone"  type="text">

Можно вставить столько полей в тему письма сколько вам понадобится. Любая комбинация будет работать. Если поля в переданной форме не будет - то подмена не производится.

Индивидуальная тема письма для каждой формы

Возможно вам понадобится индивидуальная тема письма для каждой формы — достаточно создать в вашей форме скрытое поле с именем rfSubject и той темой письма, которая вас устраивает.

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

<input name="rfSubject" value="Заказ часов" type="hidden">

Вместо "Заказ часов" — пропишите свою тему. В индивидуальной теме письма тоже можно подставлять свои поля - замена будет работать. То есть если вы хотите чтобы в вашей теме присутствовало одно из полей формы, то (например phone), то достаточно добавить {phone} в саму тему.

Помимо темы письма можно задавать и адресатов формы обратной связи.

Выбор адресата формы

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

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

Для того чтобы выбрать адреса предназначено скрыто поле rfTarget.

Например, вот такое поле выберет адресата с идентификатором 3:

<input name="rfTarget" value="3" type="hidden">

Сами адресаты задаются в списке альтернативных адресов Email и chat ID телеграм.

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

Имя поля "Ответить на"

Это поле, которое позволяет очень сильно упростить общение с клиентом.

Давайте представим ситуацию, когда клиент заполнил форму и указал в ней свой email. Заполненную форму на ваш E-mail пришлет ваш сервер. Если попытаться ответить на это письмо — его получит ваш сервер. Этот факт не всегда сразу понятен администратору сайта, да и не очень удобен в работе. Значительно удобнее, если будет возможность просто ответить на это письмо и в качестве адресата уже будет выбран тот E-mail, который указал клиент, который заполнил форму.

Именно для этого и предназначена данная настройка.

Выберите имя поля, которое будет использоваться как адрес для ответа на письмо, если администратор нажмёт «Ответить»

Если вы в качестве поля для E-mail выбираете name="email", то можете ничего не менять в настройках — все уже сделано за вас.

Обязательные поля и валидация HTML5 полей формы

Плагин позволяет либо использовать встроенную валидацию полей HTML5, либо предоставляет возможность указывать поля, которые должны быть заполнены в обязательном порядке с помощью CSS класса. Эти поля должны иметь класс CSS required. Если эти поля не будут заполнены и пользователь попытается нажать кнопку "Отправить", то всем незаполненным полям будет назначен тот класс, который прописан в настройках плагина («CSS класс для невалидных полей»).

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

<input class="uk-input" name="skolko" placeholder="Сколько коробок?" pattern="\d+" required="" type="text">

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

Если поле не проходит валидацию, форма отправлена не будет и те поля, которые не прошли валидацию, получат классы CSS, которые указаны в настройках плагина в поле «CSS класс для невалидных полей»

В качестве классов для таких полей может использоваться несколько классов одновременно, разделенных пробелом. Для тем на основе yootheme я советую использовать два класса — uk-form-danger и uk-animation-shake.

Если вы используете другой шаблон (не на основе UIKit), то вот определение класса, которое позволяет визуально выделить незаполненные или неверно заполненные поля.

@keyframes uk-shake {
0%, 100% { transform: translateX(0); }
10% { transform: translateX(-9px); }
20% { transform: translateX(8px); }
30% { transform: translateX(-7px); }
40% { transform: translateX(6px); }
50% { transform: translateX(-5px); }
60% { transform: translateX(4px); }
70% { transform: translateX(-3px); }
80% { transform: translateX(2px); }
90% { transform: translateX(-1px); }
}


textarea.uk-form-danger,
input.uk-form-danger {
border-color: red;
animation-duration: .5s;
animation-timing-function: ease-out;
animation-fill-mode: both;
animation-name: uk-shake;
}

Тексты ошибок для неверно заполненных полей

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

На самом деле решение уже давно существует и находится в рамках использования классов CSS.

Давайте рассмотрим на конкретном примере — вот форма, которая используется для заказа нескольких ящиков продукции:

<form class="uk-form-stacked">
    <div class="uk-margin">
        <input class="uk-input " name="email" placeholder="Ваш Email..." required
                type="email">
        <div class="tm-error">Заполните правильно E-mail</div>
    </div>
    <div class="uk-margin">
        <input class="uk-input " name="skolko" placeholder="Сколько коробок нужно?"
               pattern="\d+" required="" type="text">
        <div class="tm-error">Укажите число ящиков</div>
    </div>
    <div class="uk-margin">
        <input class="uk-input" name="address" placeholder="Адрес доставки или самовывоз" type="text">
    </div>
    <div class="uk-margin-medium-top">
        <button class="uk-button uk-button-primary rf-button-send uk-width-1-1">Отправить заявку
        </button>
    </div>
    <input name="rfSubject" value="Заказ на сайте" type="hidden">
</form>

Вот как эта форма выглядит в работе:

Заполните правильно E-mail
Укажите число ящиков

Здесь присутствуют два обязательных поля (email и количество ящиков продукции), которые помечены атрибутом required (не путайте с именем CSS поля!).

Первое поле имеет тип E-mail. Значения, не соответствующие корректному формату e-mail, не пройдут валидацию.

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

Для того чтобы пользователю было понятнее, что не так с его значениями — выводятся пояснения.

Как это было сделано?

Если какое-то поле не проходит валидацию, скрипт добавляет ему тот класс, который вы указали в настройках RadicalForm – он называется «CSS класс для невалидных полей». В нашем примере я указал там значение uk-form-danger. Именно этот класс будет добавлен к каждому невалидному полю. Основываясь на этом факте, мы можем добавить необходимые правила CSS.

После каждого поля мы добавили тег <div> с классом CSS tm-error. Затем мы добавили следующие классы в CSS файл нашего сайта:

.uk-form-danger + .tm-error {
    display: block;
}
.tm-error {
    position: absolute;
    font-size: 12px;
    color: darkred;
    display: none;
}

Эти правила позволяют скрыть сообщения в нормальном состоянии и показать их тогда, когда поле получит класс uk-form-danger, т.е. тогда, когда будет понятно, что поле не прошло валидацию.

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

input:invalid, input:invalid:focus {
    color: red;
    box-shadow: none;
}

Эти классы позволяют выделить красным неверно введенные значения. Причем цвет поменяется в тот момент, когда пройдет валидация.

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

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

Поля со множественными значениями (checkbox и select multiple)

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

Делается это обычно с помощью полей checkbox и особой формы select multiple.

Для корректной работы формы с такими значениями нужно следовать общепринятому стандарту PHP и дать одинаковое значение для всех полей checkbox добавив в конце [].

Например, так:

<form>
    <input type="text" name="name" class="required" placeholder="Имя">
    <input type="text" name="phone" placeholder="Телефон">

    <input type="checkbox" name="tf[]" value="любой">
    <input type="checkbox" name="tf[]" value="стандарт">
    <input type="checkbox" name="tf[]" value="vip1-пятница">
    <input type="checkbox" name="tf[]" value="vip1-пятница без оборудования">
    <input type="checkbox" name="tf[]" value="vip2 суббота">
</form>

Для поля select multiple такая форма выглядит так (выбор осуществляется при нажатой клавише Ctrl):

<form>
    <select name="tour[]" class="uk-select required"  multiple>
                <option value="">пусто</option>
                <option value="Алмазный фонд<">Алмазный фонд</option>
                <option value="Оружейная палата">Оружейная палата </option>
                <option value="Территория Кремля">Территория Кремля </option>
                <option value="Большой Кремлевский Дворец">Большой Кремлевский Дворец</option>
                <option value="Грановитая палата">Грановитая палата</option>
    </select>
</form>

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

Сообщения "Подождите"

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

Например, для yootheme шаблонов или шаблонов на основе UIKit3 можно использовать такой код: <div uk-spinner></div> . Вы также можете вставлять какие-либо иконки или svg файлы.

Отправка фотографий и других разрешенных вложений

Чтобы создать поле для отправки разрешённых вложений, используйте стандартное поле с классом rf-upload-button.

<input class="rf-upload-button" name="fileupload" type="file">

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

<div class="uk-form-custom" uk-form-custom>
<button class="uk-button uk-button-primary rf-upload-button-text">ПРИЛОЖИТЬ ФОТО</button>
<input class="rf-upload-button" name="fileupload" type="file">
</div>

Прошу обратить внимание на два тега с указанными css классами: rf-upload-button и rf-upload-button-text

Тег с классом rf-upload-button-text предназначен для отображения надписи. Именно он приобретает статус disabled на время загрузки файла и у него будет изменена надпись на "подождите" или любую из указанных в настройках плагина, пока идет загрузка файла на сервер. Тег с классом rf-upload-button-text должен быть на одном уровне вложенности с тегом с классом rf-upload-button. Обычно это укладывается в способы отображения кастомизированного поля для загрузки файлов для различных шаблонов Джумла.

Так как с помощью одной кнопки можно загрузить несколько файлов, то нужно предусмотреть место, куда будет выводиться список загруженных и готовых к отправке файлов. Заведите в удобном для вас месте тег div с классом rf-filenames-list . В этом диве будут появляться имена загруженных файлов или ошибки, которые возникают при загрузке.

<div class="rf-filenames-list"></div>

Обратите внимание — этот тег должен находиться внутри формы! Иначе он не будет очищен!

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

Настройка телеграм

На вкладке "Интеграция с другими сервисами" вы можете подключить отправку сообщений нужным вам людям с помощью телеграм бота.

Для этого включите тумблер "включить телеграм" и создайте телеграм бота с помощью бота @BotFather (можно просто перейти по этой ссылке).

Введём команду /newbot

Придумываем обычное и техническое имя с хвостиком bot. Самое важное — не забываем скопировать полученный ключ-токен.

Полученный от него HTTP API токен скопируйте в окошко HTTP API token и нажмите кнопку сохранить!

Если вы не сохраните токен — дальше ничего работать не будет!

Затем пошлите вашему боту любое сообщение.

После того как вы это сделаете — нажмите кнопку "обновить chat_id" и ваш chat_id появится в списке.

Если все сделали правильно — в списке появится chat_id вашего диалога с ботом.

Сохраните эти настройки! Не забудьте!

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

Переопределение шаблона писем

Шаблон отправляемых писем тщательно тестировался на всех возможных клиентах и учитывает самые различные требования клиентов. Однако, следуя свободному духу Joomla, была добавлена возможность переопределения шаблона писем.

Для того чтобы это сделать вам нужно создать папку plg_system_radicalform в папке html вашего шаблона. Это стандартный способ переопределения представлений различных расширений Joomla.

Затем вам нужно будет скопировать файл default.php из папки /plugins/system/radicalform/tmpl в папку /templates/yootheme/html/plg_system_radicalform . Здесь yootheme надо поменять на имя папки вашего шаблона.

Этот файл вы можете модифицировать по своему усмотрению. Переменная $subject — это тема письма, $mainbody — основное тело письма, и $footer — дополнительная информация о посетителе. Вашему коду будут доступны все переменные формы в массиве $source.

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

$mainbody .= "<p>".JText::_($key) . ": <strong>" . $record . "</strong></p>";

Здесь $key – это ключ (имя вашего поля), а $record – это его значение. Этот код позволит произвести автоматическую замену языковых констант, которые вы переопределили в Joomla (чтобы вместо name выводилось "имя клиента").

Пример кода, который формирует $mainbody:

$mainbody="";
foreach ($source as $key => $record)
{
	if (is_array($record))
	{
			$record = implode(',', $record);
	}
	$mainbody .= "<p>".JText::_($key) . ": <strong>" . $record . "</strong></p>";
	$telegram.= JText::_($key) . ": <b>" . $record ."</b><br />";
}

Ссылка на соответствующий код в github, который формирует тело письмо, вот https://github.com/Delo-Design/radicalform/blob/f6f691dc8d4a6ecf616ff34287caebf19f7ad8fd/radicalform.php#L460

Интеграция с сервисом Jivosite

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

Следует обратить внимание на один момент – если вы хотите, чтобы информация о посетителе (такая, как email, его имя и телефон) попали в сервис Jivosite - нужно назвать поля формы соответствующим образом.

То есть поле с именем должно иметь имя — name:

<input class="uk-input required" name="name" placeholder="Ваше имя..." type="text">

Поле с телефоном должно иметь имя - phone:

<input class="uk-input required" name="phone" placeholder="Ваш телефон..." type="text">

Поле с email должно иметь имя email:

<input class="uk-input required" name="email" placeholder="Ваш email..." type="text">

Свой кастомный php код

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

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

Плагин предусматривает интеграцию с собственным php кодом.

Вам нужно создать свой php файл в папке /templates/yootheme/html/plg_system_radicalform . Здесь yootheme надо поменять на имя папки вашего шаблона.

Ваш файл должен начинаться со строк:

<?php
    defined('_JEXEC') or die;

Далее идет ваш код, который будет вызван в момент отправки вашей формы.

Вашему коду будут доступны все переменные формы в массиве $source. Например, если вы хотите обратиться к полю форму с именем name, то обращение к нему будет выглядеть так:

if(isset($source['name']))
{
	$contact_name=$source['name'];
}

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

В массиве будут находиться все переменные, в том числе дополнительные, которые содержат информацию о посетителе:
reffer - страница, с которой посетитель пришел на ваш сайт (может быть не установлена)
pagetitle - заголовок страницы с формой
resolution - разрешение экрана вашего посетителя
url - адрес страницы с формой
uniq - число, которое используется для формирования временного адреса хранения загруженных посетителем файлов. Адрес будет таким: '/tmp/rf-uniq'. После того как будет окончена работа плагина эти файлы будут удалены.

В своем скрипте не надо использовать переменные с именем $body!

Эта переменная используется для отправки email!

После того как файл будет создан, вам понадобится добавить его имя в интерфейсе плагина:

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

<input name="rfTarget" value="3" type="hidden">

Если в форме не создано скрытое поле с именем rfTarget, то будут вызваны все кастомные файлы без заполненного поля targetID. И наоборот, если в форме создано скрытое поле с именем rfTarget — будут вызваны только файлы с указанным target.

Расширение функциональности за счет создания своих плагинов

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

Функция класса плагина, которая принимает вызов, выглядит примерно следующим образом:

public function onBeforeSendRadicalForm($clear, &$input, $params)
{
	$input['name']="test name";
}

Она получает следующие параметры:

$clear — это массив данных, полученный от формы и очищенный ото всех вспомогательных данных.

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

$params — это объект, содержащий все параметры плагина и вспомогательные данные, которые известны при отправке формы. Например здесь можно получить адрес папки, куда были загружены фотографии (их можно переместить в нужное вам место):

$params->get('uploaddir');

Так же можно получить номер последней отправленной формы:

$params->get('rfLatestNumber');

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

Скачать тестовый плагин для RadicalForm

Интеграция с Bitrix24 CRM

Для интеграции с Bitrix24 CRM уже написан плагин Сергея Толкачева WT JoomShopping Bitrix24 PRO. Несмотря на то что в названии упоминается JoomShopping, плагин умеет работать и с RadicalForm. Скачать и прочесть подробнее можно по ссылке: https://web-tolk.ru/dev/joomla-plugins/wt-joomshopping-bitrix24-pro.html

Если вы хотите разработать свой вариант интеграции – можете использовать как отправную точку код интеграции, который расположен на gist от github.

https://gist.github.com/progreccor/fae1b97b4af4fc83a7ed552f9db4bd8b

Интеграция с AmoCRM

Для интеграции с AmoCRM лучше всего использовать плагин Сергея Толкачева WT AmoCRM - RadicalForm. Для работы плагина необходима библиотека WT AmoCRM. Плагин и библиотека работают только с Joomla 4 / Joomla 5. Скачать и прочесть подробнее можно по ссылке: Для интеграции с AmoCRM лучше всего использовать плагин Сергея Толкачева WT AmoCRM - JoomShopping плагин отправки заказов в Amo CRM. Несмотря на то что в названии указано про JoomShopping – плагин умеет работать и с RadicalForm. Скачать и прочесть подробнее можно по ссылке: https://web-tolk.ru/dev/joomla-plugins/wt-amocrm-radicalform

Если вы хотите использовать свой код для интеграции – можете использовать код интеграции, который расположен на gist от github.

https://gist.github.com/progreccor/59a8368da47b932df3c1a6b00a3ea093

Из-за особенностей настройки своих CRM не представляется возможным сделать универсальную интеграцию. Поэтому меняйте готовый файл под себя.


Антиспам

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

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

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

Блокируемые диапазоны задержки перед отправкой формы

Можно указать блокируемые диапазоны задержки перед отправкой формы. Используется метрика "Через какое время после загрузки страницы отправлена форма".

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

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

Например:

0-4, 12-13

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

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

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

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

Примеры регулярных выражений
Любой gmail-адрес:
/@gmail\.com$/i

Gmail-адрес, где перед @ есть точка:
/^[^@\s]+\.[^@\s]+@gmail\.com$/i

Gmail-адрес с несколькими сегментами через точки, что часто встречается у спама:
/^[^@\s]+(?:\.[^@\s]+){2,}@gmail\.com$/i

Ссылка в сообщении:
/(https?:\/\/|www\.)/i

Типичные спам-слова:
/(casino|betting|slots|viagra)/iu

Сообщение только латиница/цифры/символы без пробелов, что часто бывает у мусора:
/^[A-Za-z0-9._-]{12,}$/

i — без учета регистра.
u — корректная работа с UTF-8, включая кириллицу.

Подробнее

Гепард – символ проекта RadicalMart

Гепард и его детеныш (RadicalMart Business и RadicalMart Express)

Символом проекта RadicalMart
является гепард

Датой рождения RadicalMart считается 10 марта 2022 года. Именно тогда был создан первый репозитарий RadicalMart и добавлены в него первые строчки кода.

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

Обычная домашняя кошка конечно очаровательна, но слишком ленива и медлительна, а вот гепард вполне соответствует основным чертам RadicalMart и воплощает все его положительные стороны.

И если вы думаете что гепард – это про Африку и саванну, то это не так. Эти животные упоминаются даже в «Слове о полку Игореве»: «На реке на Каяле тьма свет покрыла — по Русской земле простерлись половцы, точно выводок гепардов».

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

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

1. Исключительная скорость RadicalMart

Гепард – это самое быстрое млекопитающее на планете. Его скорость может достигать 112 км/ч. Подобно ему RadicalMart выделяется своей скоростью среди всех интернет магазинов.

В отличие от существующих решений электронной коммерции, построенных на базе устаревшей технологии EAV, RadicalMart использует все преимущества новых версий баз данных Mysql 8 и MariaDB 10 и 11.

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

Так же как гепард легко настигает свою добычу, RadicalMart превосходит все другие реализации интернет-магазинов по своей скорости и гибкости.

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

Гепарды являются самыми быстрыми наземными животными в мире

Гепарды при охоте очень сосредоточены и целенаправленны,

2. Удивительная гибкость гепарда и RadicalMart

Гепарды – это чрезвычайно ловкие и маневренные охотники. Они обладают исключительно гибким телом, длинными ногами и мощными мышцами, что является ключевым фактором, делающим их такими выдающимися охотниками.

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

Невероятная гибкость гепарда во время охоты

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

С RadicalMart вы никогда не услышите – «это нельзя сделать». Подобно гепараду, даже на полной скорости, RadicalMart позволит извернуться и достичь нужной цели.

Все цели достижимы, если вы используете RadicalMart!

3. Прекрасная адаптация и неприхотливость

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

Прекрасная адаптация к сложным условиям

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

4. Дружелюбие и предрасположенность к человеку

У гепарда мягкий и миролюбивый нрав . Когда гепард доволен, он начинает урчать как огромный домашний кот. Гепард очень быстро привыкает к человеку и его очень легко приручить (прямо как RadicalMart).

На фото – гепард Герда из Пензы

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

Идеальный баланс и дружелюбие к пользователям – это то, что дает RadicalMart каждому, кто впервые с ним сталкивается в своей работе.

Подробнее

Возможности

Возможности RadicalMart

Дизайн и внешний вид

  • Удобная работа с шаблонами

    Гибкая шаблонизация

    Изменяйте внешний вид сайта через переопределение шаблона. Разделение на субмакеты позволяет редактировать даже самые мелкие детали.
  • Удобная работа с шаблонами

    Современные фрейморки

    Подключайте любой фронт-энд фреймворк и делайте на нём шаблон. Bootstrap из коробки. Шаблонизация на Uikit или индивидуальные решения разработчика.
  • PWA версия

    Мобильное приложение

    Сделайте кроссплатформенное веб-приложение для мобильных устройств, которое будет работать на iOS, Android и др. при помощи технологии PWA.
  • Готоые решения

    Готовые решения

    Вы можете расширить возможности в рамках своей редакции или выбрать готовые сайты на продажу.

    Узнать больше

Администрирование

  • Управление полями

    Управление полями

    Гибкое управление полями, разные типы полей, редактирование полей находясь внутри товара.
  • Мета-товары

    Мета-товары

    Добавление товару свойства витрины через функцонал мета-товаров.
  • Синхронизация с CRM

    Синхронизация с CRM

    Автоматическая выгрузка данных по новым заказам и пользователям в CRM систему.

    Скоро появится
  • Импорт/экспорт

    Импорт/экспорт

    Широкие возможности по импорту и экспорту товаров, категорий и заказов через CSV формат.
  • Миграция из других магазинов

    Миграция из других магазинов

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

    Подробнее

  • Статистика заказов

    Статистика заказов

    Скоро появится

Бухгалтерия и склады

  • Мультисклад

    Мультисклад

    Возможность учета кол-ва товаров на разных складах. Недоступность заказа при нулевом остатке.
  • 1С: УТ

    1С: УТ

    Автоматизация оптовой торговли, интернет-магазинов, складов при магазинах.

Оплата и доставка

  • Плагины оплаты

    Плагины оплаты

    Интеграции с популярными системами оплаты и эквайрингами банков. Магазин изначально ориентирован на российский рынок и страны СНГ и учитывает особенности национальных законодательств.
  • Фискализация

    Фискализация

    Формирование чеков и интеграция с облачными сервисами фискализации для передачи данных в налоговую в соответствии с 152-ФЗ. На выбор представлены различные плагины интеграции.
  • Плагины доставки

    Плагины доставки

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

    Кастомные решения

    Вычисление стоимости в зависимости от параметров (вес, габариты), расчёт сроков доставки, выбор точки выдачи на карте, цена в зависимости от региона и пр.

Поисковое продвижение

  • Поисковое продвижение

    Управление параметрами

    Произвольное заполнение мета-данных (описание, title, h1), а также автоматическое формирование заголовков meta title по заданным шаблонам в зависимости от категории.
  • Соответствие стандартам

    Соответствие стандартам

    Правильная отдача canonical для страниц. Микро-разметка для расширенных сниппетов, Open Graph, а также ручное выставление параметров. Формирование карты сайта (sitemap.xml) и включение в xml файл ссылок на картинки.

Разработчикам

  • Широкие возможности API

    Интеграция через API

    Магазин имеет модульную систему и написан по всем канонам и стандартам современного веб, что открывает возможности для взаимодействия с ядром магазина. Гибкая MVC модель.
  • Документация

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

    Подробная документация для пользователя (работа с магазином) и документация для разработчика (изменение внешнего вида и написание своих расширений)
  • Сообщество

    Сообщество

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

    Сертификация

    Пройдите обучение, тестирование на знание технологий и станьте сертифицированным разработчиком RadicalMart.
  • Расширение функционала

    Расширение функционала через дополнения

    Расширение возможностей магазина путём установки дополнений (плагины, компоненты, модули, библиотеки), которые обеспечивают дополнительный функционал. Изучите каталог расширений SovMart.

    Перейти в каталог расширений

  • Готовые магазины

    Готовые магазины на продажу

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

    Примеры готовых сайтов

Кроме того, доступны такие возможности:

  • Работа с большими объемами товаров;
  • Мультиязычность;
  • Поддержка разных валют;
  • Гибкое разделение прав доступа;
  • Редактирование с фронта;
  • Пользователь как физическое лицо/компания;
  • Формирование счета-фактуры в pdf формате;
  • Уведомление о заказе в Телеграм аккаунт;
  • Система скидок и купонов;
  • Шаблоны писем уведомлений;
  • Управление налоговыми ставками;
  • Доступ к файлам после успешной покупки;
  • Фильтр товаров на Ajax;
  • Защита от спама и регистрации ботов;
  • И многое другое!

Все редакции RadicalMart

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

Перейти в раздел

Наверх страницы

Подробнее

Миграция магазинов

Миграция данных на RadicalMart
с других платформ


Мы можем помочь с миграцией данных существующих магазинов на платформу RadialMart. Услуга оказывается по запросу.
  • 1С Битрикс
  • WooCommerce
  • JoomShopping
  • Virtuemart
  • Hikashop
  • JBZoo
  • CS Cart
  • OpenCart
  • Prestashop
Напишите нам в Телеграм чат: @radicalmart

Подробнее

Партнёрская программа

Партнёрская программа RadicalMart

Приводите новых клиентов и получайте фиксированное вознаграждение с продажи каждой лицензии. Условия оговариваются индивидуально.

Подать заявку на программу

получайте 40% прибыли с продажи лицензии RadicalMart

В чём преимущество партнёрской программы RadicalMart?

  • Выгодное сотрудничество

    01

    Включайте в смету работ на разработку сайта стоимость лицензии, которую оплатит заказчик.
  • Пассивный доход вебмастера

    02

    С каждой проданной лицензии вы получите роялти. Прозрачная и понятная схема работы. Больше продаж - выше доход.
  • Ежемесячные выплаты

    03

    Приводите клиентов и получайте ежемесячные выплаты. Давайте зарабатывать вместе!

В чём преимущество партнёрской программы RadicalMart?

  • Работаем с организациями, ИП и частными лицами

    Мы работаем со всеми. Подходит любая форма организации: юридическое лицо, ИП, самозанятый или физическое лицо.
  • До половины стоимости лицензии — вам

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

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

Оставьте заявку на участие
в партнёрской программе

Укажите название своей организации или ФИО, а также электронную почту или Telegram.
Мы свяжемся с вами и обсудим детали сотрудничества.
Ваше имя *
Укажите, как к Вам обращаться?
E-mail *
Укажите свой E-Mail
Ваш Telegram:
Укажите свой Telegram аккаунт
Дополнительные сведения:

Подробнее