Рад сообщить, что вышла новая версия модуля обратной связи Wedal Joomla Callback – 2.2.0.
Пожалуй, это самое крупное обновление со времени выхода второй версии модуля. В него вошло больше полусотни изменений: новые функции, исправления ошибок и серьезная работа над безопасностью и защитой от спама.
Модуль, как и раньше, распространяется бесплатно и имеет открытый код.
Рассказываю, что изменилось…
Содержание
Новые возможности
Начнем с самого интересного.
Встроенная защита от спама
Спам через формы обратной связи – проблема, с которой рано или поздно сталкивается любой сайт. Боты отправляют десятки заявок, а если у вас подключена отправка СМС, то еще и тратят ваши деньги.
Теперь в модуле есть встроенная защита. В настройках появилась новая вкладка «Защита от спама». Защита работает сразу в нескольких направлениях:
- Скрытое поле-ловушка. Человек его не видит, а бот, как правило, заполняет. Такие заявки отклоняются.
- Минимальное время заполнения. Живой человек не может заполнить форму за одну секунду, а бот может. Заявки, отправленные быстрее заданного времени, отклоняются.
- Ограничение количества заявок. Вы задаете, сколько заявок можно отправить с одного IP-адреса и в рамках одной сессии за определенный период. Дополнительно есть общий потолок для каждого экземпляра модуля, чтобы массовая атака с разных адресов не завалила вас заявками.
Защита включена по умолчанию, со следующими настройками:
- Максимум заявок – 3
- Период ограничения – 3600 секунд (1 час)
- Минимальное время заполнения – 3 секунды
Для большинства сайтов этих значений будет достаточно. Но при необходимости вы можете их изменить или полностью отключить защиту.
Поддержка CAPTCHA
Еще одна функция, о которой меня часто спрашивали. На той же вкладке «Защита от спама» теперь можно выбрать CAPTCHA для формы.
Модуль использует стандартные CAPTCHA-плагины Joomla. Это значит, что подойдет любой включенный на сайте плагин: встроенная в Joomla reCAPTCHA, невидимая reCAPTCHA или сторонние решения. Просто выберите нужный плагин из списка. В Joomla 6 доступен плагин Proof of Work, который вообще не требует регистраций и дополнительный ключей. Достаточно его активировать и выбрать в настройках модуля.
CAPTCHA работает как во встроенной, так и во всплывающей форме.
Подстановка данных авторизованного пользователя
Если на вашем сайте есть авторизация, то вам будет полезна новая опция «Подставлять Имя и Email авторизованного пользователя».
При ее включении поля «Имя» и «Email» будут заранее заполнены данными из профиля пользователя, когда он авторизован на сайте. Мелочь, а посетителю приятно – не нужно вводить то, что сайт о нем и так знает. Гости сайта, разумеется, видят обычную пустую форму.
Поддержка событий Google Аналитики
Помните вкладку Google Аналитики в настройках модуля с надписью «В разработке»? Наконец-то она заработала)
Теперь, по аналогии с целями Яндекс.Метрики, вы можете указать имена событий Google Аналитики (GA4) для двух действий:
- клик по кнопке вызова всплывающей формы
- отправка формы
Создавать события в Google Аналитике заранее не нужно – они появятся в отчетах после первой отправки. Идентификатор потока данных указывать тоже не нужно.
Если счетчик установлен у вас через Google Tag Manager, это тоже будет работать. Событие уйдет в dataLayer, и в Tag Manager его можно будет поймать триггером «Специальное событие».
Новая маска ввода телефона
Маска телефона в модуле работала на основе сторонней библиотеки, и с ней периодически возникали проблемы при вводе номера. В новой версии я заменил ее на собственную, простую и легкую маску.
Что изменилось для пользователя:
- исправлены ошибки ввода, которые встречались в старой маске;
- формат номера (например,
+7 (###) ###-##-##) виден в пустом поле еще до начала ввода; - неполный номер браузер просто не даст отправить.
Настройки маски при этом остались прежними, ничего менять не нужно.
Все вложения теперь уходят в Telegram
Раньше модуль отправлял в Telegram все вложения как фотографии. С изображениями это работало, а вот PDF или документ Word до Telegram просто не доходил. Не доходили и вложения, если их было больше десяти.
Теперь в Telegram уходят все вложения: картинки приходят альбомом, а остальные файлы (PDF, документы Word и Excel) – обычными документами. Большое количество файлов модуль сам разбивает на несколько сообщений.
И, как и раньше, если Telegram по какой-то причине недоступен, заявка все равно дойдет до вас на почту.
Поддержка Joomla 6
Модуль проверен и работает на Joomla 6. Устаревшие вызовы, которые были объявлены в Joomla нерекомендуемыми, заменены на актуальные. Так что модуль готов и к будущим версиям Joomla.
Текущие требования модуля: Joomla 4.1+, 5.x или 6.x и PHP 8.1 или новее.
Улучшения безопасности
Значительная часть работы над этой версией была посвящена безопасности. Подробно описывать каждое изменение смысла нет, но перечислю основное:
- Строгая проверка вложений. Модуль принимает файлы только из списка безопасных форматов: изображения (jpg, png, gif, webp, avif и др.), PDF, документы Word и Excel. Файл, содержимое которого не соответствует расширению, не будет прикреплен. Формат SVG исключен, т.к. он может содержать исполняемый код.
- Защита письма от вставки HTML-кода. Данные, которые пользователь ввел в форму, не могут исказить или подменить содержимое письма, которое приходит вам на почту.
- Защищенное соединение с SMS.ru и Telegram. Модуль проверяет подлинность сертификатов этих сервисов при отправке сообщений.
- Проверка Email на сервере. Адрес теперь проверяется не только в браузере, но и на стороне сайта.
Если вы используете модуль на рабочем сайте, я настоятельно рекомендую обновиться.
Исправления ошибок
Помимо новых функций, в модуле исправлено много ошибок. Вот наиболее заметные из них:
- При включенном кэше страниц Joomla встроенная форма могла перестать отправляться.
- Если сессия пользователя истекла, форма показывала непонятную ошибку. Теперь пользователь увидит понятное сообщение с просьбой перезагрузить страницу.
- Исправлена работа модуля на сайтах, установленных в подкаталог, и на мультиязычных сайтах.
- Исправлена ошибка при нескольких формах на одной странице: клик по подписи поля мог переводить курсор в поле другой формы.
- Исправлена ошибка JavaScript, которая возникала при некоторых вариантах установки кода Яндекс.Метрики.
- Не работала опция вывода статуса отправки СМС в письме. Также обновлен механизм отправки СМС через SMS.ru.
- Если статья с условиями обработки персональных данных была удалена или снята с публикации, форма ломалась.
- При ошибке отправки почты пользователь теперь видит понятное сообщение «Заявка не может быть доставлена. Попробуйте позже.», а загруженные им временные файлы удаляются с сервера.
- Поле вложения теперь выводится после дополнительных полей формы, а не перед ними.
- Исправлены ошибки в языковых файлах, обновлены перевод и описание модуля. Ссылки на документацию по полям Joomla ведут на актуальный раздел.
Также была выполнена внутренняя переработка кода модуля. Теперь модуль имеет несколько хелперов, в которых сгруппированы методы по смыслу. Пользователям это не видно, но код стал заметно аккуратнее, а значит модуль будет проще развивать дальше.
Что важно знать перед обновлением
Обновление должно пройти без проблем, но есть несколько моментов, на которые стоит обратить внимание.
1. Защита от спама включится автоматически.
После обновления с одного IP-адреса можно будет отправить не больше 3 заявок в час. Для обычного посетителя этого с запасом, а вот при тестировании формы вы можете упереться в лимит. Если будете много тестировать – временно увеличьте лимит или отключите защиту.
2. Проверьте допустимые форматы вложений.
Если раньше вы разрешали в форме загрузку архивов, SVG, текстовых или других файлов вне списка безопасных форматов, то теперь такие файлы прикреплены не будут. Список безопасных форматов: jpg, jpeg, png, gif, webp, avif, bmp, tif, tiff, pdf, doc, docx, xls, xlsx. Настройка в модуле может только сузить этот список.
3. Изменились идентификаторы полей формы.
Чтобы исправить конфликт нескольких форм на одной странице, к идентификаторам полей добавился id модуля. Например, поле телефона в модуле с ID 105 теперь имеет идентификатор wjc105_phone, а не phone.
Большинства пользователей это не коснется. Но если вы писали свои стили или скрипты, обращаясь к полям по ID (например, #phone), их нужно будет поправить. CSS-классы оберток полей остались прежними, так что лучше ориентироваться на них.
4. Как обновиться?
Если модуль уже установлен, обновление появится в менеджере расширений Joomla – обновитесь как обычно. Либо скачайте архив по ссылке ниже и установите его поверх текущей версии. Настройки ваших модулей сохранятся.
Где скачать Wedal Joomla Callback 2.2.0?
Новая версия доступна в репозитории модуля на GitHub, в ветке master.
Скачать Wedal Joomla Callback 2.2.0 для Joomla 4.1+, 5, 6
Репозиторий модуля: github.com/wedal/mod_wedal_joomla_callback
Подробнее базовых возможностях второй версии модуля, JS-триггерах и дополнительных полях вы можете прочитать в статье Wedal Joomla Callback 2 – обновленная версия модуля обратной связи для Joomla 4.
Большое спасибо всем, кто присылал замечания и предложения по работе модуля. Многое в этом обновлении появилось именно благодаря вашей обратной связи.
Я всегда рад конструктивной критике. Если заметили ошибку или вам не хватает какой-то функции – пишите в комментариях или на почту. Тем самым вы поможете сделать модуль еще лучше.