
Наконец, он готов к релизу. Рад представить вашему вниманию обновленный модуль обратной связи Wedal Joomla Callback 2.
В нем учтены все пожелания, собранные за время существования Wedal Joomla Callback 1.x.
В нем добавлены новые, очень полезные функции.
Он, как всегда, имеет открытый код и распространяется бесплатно.
Встречайте…
Содержание
- О модуле
- Новые возможности Wedal Joomla Callback 2
- Поддержка Joomla 4+ и отказ от поддержки Joomla 3
- Добавлена поддержка неограниченного количества дополнительных полей разных типов, через Joomla XML Fields
- Добавлена возможность переопределения базовых полей
- Добавлена поддержка вложений
- Добавлена поддержка целей Яндекс.Метрики
- Код кнопки вызова формы максимально упрощен для использования в любом месте страницы
- Добавлены дополнительные возможности оформления модуля
- jQuery больше не требуется
- Добавлены JS-триггеры для разных событий модуля
- Возможность указать несколько получателей письма
- Все поля теперь используют базовые макеты Joomla, наследуют стили шаблона, могут быть переопределены в шаблон
- Файлы стилей и скриптов модуля теперь доступны для переопределения
- Добавлена возможность получения сообщения по СМС (v2.1.0+)
- Добавлена возможность получения сообщения в Telegram (v2.1.0+)
- Мелкие доработки и исправления
- Где скачать модуль Wedal Joomla Callback 2?
О модуле
Wedal Joomla Callback 2 – модуль для Joomla 4+, который позволяет добавлять на сайт встроенные и всплывающие формы обратной связи в любых количествах.
Модуль работает полностью по AJAX, без перезагрузки страницы при вызове и отправке.
Все другие подробности относительно базовых возможностей модуля, которые были в версии 1.x, вы можете прочитать в статье: Модуль Wedal Joomla Callback – Всплывающая Форма Обратной Связи.
Новые возможности Wedal Joomla Callback 2
Теперь про самое интересное. Что появилось в новой версии модуля.
Поддержка Joomla 4+ и отказ от поддержки Joomla 3
Код модуля переписан практически полностью. Теперь он выполнен по канонам Joomla 4. Версию Joomla 3 модуль, к сожалению, не поддерживает и поддерживать не будет.
Нужно смотреть в будущее и идти вперед. Было принято решение отказаться от сохранения совместимости с Joomla 3 ради чистоты кода.
Joomla 3 будет поддерживать старая версия модуля Wedal Joomla Callback 1.x. Вы можете скачать ее здесь:
Скачать Wedal Joomla Callback 1.x для Joomla 3
Поскольку код модуля полностью переписан, возможны проблемы с обновлением с версии 1.x на версию 2. Если вы используете старую версию модуля на Joomla 4+ и хотите обновить ее, то лучше пойти по пути удаления старого модуля и установки нового.
С неприятной частью закончили) Теперь о хорошем…
Добавлена поддержка неограниченного количества дополнительных полей разных типов, через Joomla XML Fields
Основным нововведением версии 2 является новый функционал модуля, реализующий поддержку дополнительных полей.
Вы можете добавить:
- Поля любых типов
- В любом количестве
- Разные в каждом модуле
Теперь ваш модуль может выглядеть, например, вот так:
Добавление полей происходит с помощью XML-формата полей Joomla. В админке это выглядит примерно вот так:
Пусть вас не пугает XML-формат полей. В документации Joomla есть подробное описание по каждому типу поля. Ссылка на эту документацию доступна прямо на вкладке дополнительных полей в модуле.
Таким образом, в Wedal Joomla Callback вы можете конструировать практически любые формы.
Данные их всех дополнительных полей автоматически будут отправляться вам на почту в заявке.
Добавлена возможность переопределения базовых полей
В продолжение темы полей. Код работы с полями переписан на полную поддержку возможностей Joomla. Отсюда появляется возможность не только добавлять новые поля, но и переопределять обязательные.
В модуле есть несколько обязательных полей, на которые раньше можно было влиять только настройками. Возможности работы с ними были ограничены. Например, без переопределения макетов вы не могли изменить их порядок.
Теперь вы можете переопределить базовые поля. Это делается путем добавления в дополнительные поля новых, с именами базовых. Например, чтобы переопределить поле «Имя», которое имеет название «name», вам нужно добавить в дополнительные поля такую запись:
Таким образом вы можете изменить заголовок поля, его валидацию, а также некоторые другие настройки. Можете вывести его не над, а под другими дополнительными полями.
Добавлена поддержка вложений
Желанная многими функция теперь доступна из коробки. В Wedal Joomla Callback 2 появилась возможность прикреплять вложения в форму, например, файл с реквизитами, фото и др. В админке эта опция включается на главной вкладке:
Вы можете:
- Выбирать между загрузкой одиночного или множественного вложения
- Ограничивать допустимые форматы файлов вложения
- Указывать свое название поля вложения
Все выбранные пользователем файлы будет прикреплены к письму с данными формы, отправленному вам на Email.
Вот так это выглядит на сайте:
Добавлена поддержка целей Яндекс.Метрики
Еще одна желаемая многими функция. Теперь в настройках модуля вы можете указывать цели Я.Метрики на вызов всплывающей формы звонка (клик на кнопку «Заказать звонок») и отправку формы.
Вот как это выглядит:
Подсказка по работе с целями представлена прямо на вкладке.
Внимание: Модуль не добавляет на сайт код Яндекс.Метрики. Убедитесь, что добавили код Яндекс.Метрики на сайт самостоятельно. Счетчики целей не будут работать без базового кода Метрики.
В настройках модуля вам нужно задать только идентификатор цели. Идентификатор счетчика модуль определит самостоятельно.
И, разумеется, вы можете задавать разные цели для каждого экземпляра модуля.
Код кнопки вызова формы максимально упрощен для использования в любом месте страницы
После того, как люди начали активно использовать первую версию модуля обратной связи, выяснилась одна особенность, о которой я не думал – многие хотят использовать модуль в билдерах страниц сайта.
Очень часто я получал вопрос: как встроить кнопку вызова модуля в то или иное место.
Проблема состояла в том, что нельзя было вот так просто создать в билдере кнопку, указать для нее ссылку и чтобы по ней вызывался нужный модуль. Почему? Модуль имел такой код для вызова кнопки:
<div id="WJC102" data-id="102" class="wjcallback ">
<a class="wjcallback-link" href="#">Заказать</a>
</div>
DIV-обертка была обязательна, т.к. в ней передавался ID модуля, необходимый для получения корректных параметров из настройки именно нужно экземпляра. И во эта DIV-обертка создавала проблемы у пользователей билдеров.
В текущей версии я учел этот момент. Теперь код вызова всплывающего окна выглядит так:
<a data-id="109" class="wjcallback-link" href="#" data-ym-aimid="popuptest">Заказать звонок</a>
Таким образом, вы можете легко вставить кнопку в билдер и вывести в любом месте сайта.
Обязательных параметров всего два:
- data-id – должен содержать ID экземпляра модуля. Без него мы не сможем понять, какой именно модуль нужно вызывать
- class = “wjcallback-link” – класс, который позволяет скрипту понять, что при клике по этой кнопке/ссылке нужно вызывать модуль.
- Дополнительно вы можете вручную указать цель для передачи в Яндекс-метрику, используя атрибут data-ym-aimid
Вот, собственно, и всё. Надеюсь, что эта функция немного упростит и без того непростую жизнь пользователям билдеров.
Добавлены дополнительные возможности оформления модуля
Чтобы поменьше лазить в код и использовать переопределения макетов, в настройки модуля добавлена вкладка «Оформление» где есть возможность задать:
- CSS-классы кнопки заказа звонка
- CSS-классы кнопки отправки формы
- CSS-классы формы
- CSS-классы для обертки каждого поля
- CSS-классы для обертки формы
Зачем это нужно. Предположим, ваш шаблон использует какой-то фреймворк, или же, в нем используются какие-то нестандартные классы для оформления форм. Раньше вам бы пришлось переопределять макет формы в шаблон и править классы в нем. Теперь вы можете задать уникальные классы прямо в настройках.
Не могу сказать, что это всегда будет удобнее. Если у вас много модулей с формами, например, десятки, то может быть проще, как и прежде, внести один раз правки в макет и не добавлять дополнительные классы в настройках каждого модуля. Если же у вас 1-2 модуля, то может быть проще сделать это через настройки.
Вот как это выглядит в админке:
Также хочу отметить вот что. В зависимости от используемого шаблона форма может выглядеть теперь по-разному. Если шаблон переопределяет или оформляет базовые формы Joomla, то наш модуль унаследует это оформление и автоматически примет стиль других форм сайта.
jQuery больше не требуется
JS-скрипты модуля полностью переписаны на чистый Javascript. Теперь подключение jQuery не требуется. Модуль больше не подключает эту библиотеку.
Добавлены JS-триггеры для разных событий модуля
В JS-код модуля добавлены триггеры (нестандартные события), которые позволяют вам добавить свои кусочки кода в то или иное место. Это аналогично плагинам в Joomla, но только работает именно для JS-кода модуля.
На данный момент доступны следующие события:
- wjcOnFormPopupAfterLoad – срабатывает сразу после появления всплывающей формы. Содержит объект загруженной формы. Может быть использовано для определения того, какая форма вызвана, какие содержит поля и т.п.
- wjcOnFormBeforeClose – срабатывает перед закрытием всплывающего окна форма. Содержит объект загруженной формы. Может быть полезно для удержания посетителя путем добавления подтверждения закрытия всплывающего окна (пример кода будет ниже)
- wjcOnFormBeforeSubmit – срабатывает перед оправкой формы. Содержит объект загруженной формы и заполненных полей. Может использоваться для дополнительной валидации формы и т.п.
- wjcOnFormAfterSubmit – срабатывает сразу после отправки формы. Содержит объект отправленной формы и заполненных полей. Может использоваться для интеграции с CRM и другими сторонними сервисами.
Ниже примеры использования JS-событий модуля в вашем JS-коде:
//Получить все поля формы после загрузки
document.addEventListener('wjcOnFormPopupAfterLoad', (form) => {
console.log(form.detail.querySelectorAll('input'));
});
//Получить информацию о форме после ее закрытия и вывести дополнительный диалог о закрытии формы
document.addEventListener('wjcOnFormBeforeClose', (form) => {
console.log(form.detail);
if (!confirm("Вы уверены, что хотите закрыть форму?")) {
event.preventDefault();
}
});
//Получить данные полей формы перед отправкой
document.addEventListener('wjcOnFormBeforeSubmit', (form) => {
let formdata = new FormData(form.detail.closest('form'));
console.log(formdata);
});
//Получить данные полей формы после отправки и возврата успешного ответа
document.addEventListener('wjcOnFormAfterSubmit', (form) => {
let formdata = new FormData(form.detail.closest('form'));
console.log(formdata);
});
});
Обратите внимание, что ваш код должен быть подключен после подключения файла скриптов модулей!
Возможность указать несколько получателей письма
Еще одна небольшая функция, которой не хватало. Теперь в настройках модуля вы можете указать нескольких получателей писем с данными отправленной формы – просто укажите их в поле «Дополнительные получатели»:
Все поля теперь используют базовые макеты Joomla, наследуют стили шаблона, могут быть переопределены в шаблон
Поскольку в модуле появились дополнительные поля, хорошо бы иметь возможность переопределения их разметки в шаблон. Такая возможность есть!
Все поля модуля используют макеты полей Joomla из папки:
/layouts/joomla/form
Эти макеты могут быть переопределены в ваш шаблон. Но учтите, что обычно все формы на сайте используют их. Таким образом, изменения в этих макетах повлияет не только на формы модуля, но и на другие стандартные формы сайта (например, форма авторизации, регистрации и т.д). Хотя это скорее плюс.
Файлы стилей и скриптов модуля теперь доступны для переопределения
Файлы скриптов и стилей модуля теперь располагаются в папке media, и, соответственно, могут быть переопределены в используемый вами шаблон.
Если вам не хватает чего-то в оформлении или JS-кода, то теперь вы легко можете переопределить файлы и подправить это под себя.
Но что касается JS-кода, то гораздо предпочтительнее будет использовать JS-триггеры, поскольку в обновлениях модуля в файл JS могут быть внесены изменения, которые вы не увидите, в случае когда переопределили JS-файл в шаблон.
Добавлена возможность получения сообщения по СМС (v2.1.0+)
В модуль добавлен функционал интеграции с сервисом отправки смс-сообщений. Вам достаточно зарегистрироваться в сервисе, ввести в модуле ключ и активировать данную функцию. Это позволит получать сообщения с сайта прямо на ваш телефон. Все инструкции вы найдете в модуле, на вкладке отправки СМС.
Если решите использовать эту функцию, внимательно ознакомьтесь с правилами и тарифами сервиса.
Добавлена возможность получения сообщения в Telegram (v2.1.0+)
Начиная с версии модуля 2.1.0 добавлена интеграция отправки сообщений в Telegram.
Это бесплатно и очень удобно, но нужно потратить некоторое время на настройку. Вам нужно будет создать группу, создать чат-бота, получить нужные данные для настроек модуля. Подробной инструкции на сайте пока нет, но их очень много в Сети. Описание может сначала показаться сложным, но в реальности все настраивается за пять минут.
Дополнительным бонусом будет то, что в Telegram отправляются также прикрепленные в модуле изображения.
Мелкие доработки и исправления
Помимо основных нововведений, описанных выше, в модуле было сделано много других, мелких, доработок и исправлений. Особого смысла их описывать нет. Но, быть может, те, кто использует модуль еще первой ветки, почувствуют их.
Практически все замечания, которые вы присылали, были учтены и исправлены в новой версии. Так что надеюсь, что обратная связь была полезной для нас всех.
Я всегда рад конструктивной критике: предложениям и замечаниям по работе модуля. Присылайте их мне на почту, пишите в комментариях. Тем самым вы поможете сделать модуль еще лучше.
Где скачать модуль Wedal Joomla Callback 2?
Новая версия модуля доступна в том же репозитории на Github. Только теперь она будет занимать ветку master. Старая же версия модуля 1.x переместится в ветку Joomla3.
В разделе релизов вы сможете найти версии для обеих веток:
- версии 1.х – для Joomla 3
- версии 2.х – для Joomla 4+
Для понимания:
- версии Wedal Joomla Callback 1.х будут работать и на Joomla 3 и на Joomla 4, но на 4 предпочтительнее использовать новый модуль
- версии Wedal Joomla Callback 2.х будут работать только на Joomla 4+
Ниже даю ссылки на скачивание последний версий обеих веток:
1. Встроенная форма не работает. Копка Отправка срабатывает, никаких сообщений об удачной отправки не появляется. письмо на почту не приходит.
2. На Всплывающая форма глючит маска телефона.
Прежняя версия 1.2 работает прекрасно.
Виталий, пожалуйста исправляй.
Проверил по пунктам:
1) Да, нашел баг, при котором форма не отправлялась при активной опции вложений с единственным файлом. Выпустил версию 2.0.1 с исправлением. Обновитесь до нее, или просто разрешите в настройках модуля множественные вложения.
2) В новой версии модуля скрипт маски используется другой. Старый скрипт использовал jQuery, а потому пришлось от него отказаться. Что именно не работает в маске? У меня все работает хорошо. Единственное отличие - в настройках модуля нужно задавать маску для телефона немного в другом формате. К примеру, вот так для российских номеров: +7 (###) ###-##-##
Установил новую версию модуля 2.0.1 на новую чистую Joomla-4.2.6.
Встроенная форма не работает:
1. Маска "телефон" не показывается.
2. Письмо отправляется, но на почту не приходит. Всплывающего собщения об отправке тоже нет.
Посмотрел код страницы - во встроенной форме не загружаются скрипты wjcallback.css, wjcallback.js, maska.js
Теперь о проблеме:
В версии 2.0.1 не загружались скрипты и стили во встроенную форму (вы спросите: как такое можно было пропустить? А вот оказывается можно. Для тестов у меня всегда опубликовано 2 экземпляра модуля: встроенный и всплывающий. Скрипты работали и для встроенного, т.к. их цеплял всплывающий). Это исправлено в версии 2.0.2. Обновитесь, пожалуйста. Проверьте, работает ли форма теперь. Маска также зависит от скриптов, а потому должна теперь тоже работать.
Спасибо за репорт, пусть и в форме негодования). Если обнаружите еще что-то - пишите. Вместе мы сделаем модуль только лучше.
По описанию похоже, что у вас возникает какая-то ошибка JS, которая блокирует форму. Если есть возможность посмотреть в живую, пришлите мне ссылку на страницу с формой ответом на этот комментарий или в мессенджер. Посмотрю и разберемся, в чем проблема.
_https://dropmefiles.com/vRheD
Обновите модуль до версии 2.0.3. Проверьте повторно (также в новом приватном окне или с очисткой кэша браузера).
Большая благодарность за репорт! Это был серьезный баг, который я, к сожалению, не увидел, т.к. тестировал модуль с привязкой ко всем страницам. Теперь он исправлен.
Подскажите, каким образом подключается всплывающая форма с собственной кнопкой?
Тег ссылки с параметром data-id и классом "wjcallback-link" разместил нужном месте модуля (переопределение стандартного mod_categoty). Если модуль WJC опубликован без указания позиции, то кнопка не работает. Если публикую его в любой доступной позиции, то работает, но при этом отображается и собственная кнопка.
Если добавляю кастомный шаблон для WJC (в переопределениях делаю копию файлов default и default_popupform c именами custom и custom_popupform), удалив при этом в файле custom код вывода кнопки и выбираю для модуля этот шаблон (custom), то тоже не работает.
Решил проблему удалением кода кнопки в файле default и назначением для модуля макета "по умолчанию", но что-то мне подсказывает что это не правильно))
И ещё. Почему-то не работает параметр "показывать блок согласия с допусловиями". При включении, в форме не отображается.
1) Насчет ручного размещения кнопки.
Чтобы это работало, модуль должен быть размещен в одной из существующих позиций сайта и опубликован. Без этого не подгрузится скрипт, который будет обрабатывать вашу кнопку.
Далее - да, была проблема, что нельзя было отключить базовую кнопку в модуле. Это было неудобно. Исправил это в версии 2.0.3. Теперь есть возможность отключать базовое отображение кнопки для вызова всплывающего окна через опцию: Скрывать кнопку вызова формы?. После обновления вы найдете ее в главном окне настроек.
В остальном - вставленная вручную кнопка должна работать. Проверил на тестовом сайте - у меня работает прекрасно.
2) Насчет блока согласия с доп. условиями.
Это был баг. Блок показывался только при наличии дополнительных полей. Он исправлен в версии 2.0.3. Благодарю за информацию о проблеме!
Что касается ЧПУ - ссылка будет формироваться в таком виде, когда выбранная статья привязана к пункту меню. Т.е. создаете статью на условия, привязываете к пункту меню, после выбираете в модуле. Ссылка будет SEF.
1. В настройках есть пункт "Показывать маску ввода номера", но по факту она ведь не показывается, просто когда начинаешь вводить номер, тогда только не удастся ввести больше цифр. По факту пользователь не видит, а что если он решит вводить телефон отличный от мобильного - 111-11?
2. Если вообще отключить маску вводу, то проверки вообще не происходит, можно вводить любой текст и отправлять, отсутствует проверка на ввод цифр, хорошо бы ввести, хотя бы и с регулярными выражениями, например разрешено ()-1-9+, максимально - столько-то символов. Ведь, если включено поле ввода E-mail, то проверка на ввод @ есть, поле проверяется на корректность ввода.
3. Вопрос капчи, скорее всего об этом думали....не будут ли спамщики использовать эту форму...?
1) Вопрос с маской неоднозначен. Не так просто подобрать хороший скрипт маски, особенно после отказа от jQuery. Маски на чистом JS довольно большие и часто включают много лишнего. Я перебрал много скриптов и в итоге остановился на том, который вы видите сейчас. У него небольшой размер и функционал, схожий с jQuery masked input, который был в старой версии. Использование именно этой маски в модуле - не догма. Вы можете отключить ее в настройках и подключить любую другую. Или же можно вообще переопределить файл маски в шаблон и заменить его содержимое.
2) У поля телефона тип tel. В спецификации HTML5 для этого типа поля есть атрибут pattern, в котором вы можете задать регулярное выражение. Я не стал добавлять его умышленно, дабы обеспечить бОльшую гибкость, но вы всегда можете переопределить поле телефона через дополнительные поля и добавить pattern с той регуляркой, которая требуется.
3) Капча не нужна. По опыту прошлой версии модуля - спам не проходит. Форма отправляется средствами AJAX, проверяет токен сессии. Большинству ботов она не по зубам и без капчи, по крайней мере на сегодня.
2. Тоже самое, замечательно было бы в настройках вывести поле "pattern" для задания разрешенных символов и их количества.
Может конечно это неудобно и нет желания заморачиваться, но сейчас рассуждаю как пользователь. Понятно, что можно там переопределить, дописать, допилить. Но хочется, чтобы Ваш продукт был максимально удобным. Спасибо.
1) Согласен. Добавил в список доработок.
2) Это вряд ли имеет смысл, т.к. маска как раз и выполняет задачи pattern. Но, как верно указали в комментариях ниже, паттерн маски должен взаимодействовать с валидатором J, чтобы не было ситуаций, когда телефон по маске не заполнен полностью, а валидация поля проходит и форма отправляется.
Ещё наблюдение/пожелание. Мне кажется было бы полезно добавить возможность указания регулярных выражений для полей (хотя бы для базовых Имя и Комментарий ). Атрибут pattern в дополнительных полях видимо не обрабатывается, по крайней мере у меня не получилось его использовать.
Версия последняя. Ж4.
Валидация поля телефона, которое заполнено не полностью, проходит, т.к. валидация используется стандартная от Joomla, а той достаточно, чтобы просто были введены данные. Здесь нужно будет довести до ума взаимодействие маски с валидацией J. Я добавил эту задачу в план доработок. Это может быть не так быстро, но со временем сделаю. А пока вы можете добавить такую проверку, используя JS-триггер wjcOnFormBeforeSubmit.
Вот все что нужно есть в нем, кроме вот этой кнопочки)
Может сделаете?
-
Как это исправить?
Хочу прописать эту ссылку в модуле "Floating Buttons" от разработчика: TemplatePlazza, но поле под ссылку там только стандартный Enter url.
Вы можете попробовать задать URL, закончив его кавычкой, затем добавить атрибут с ID модуля и не закрыть кавычку после него. Если вдруг данные в этом поле не фильтруются (что, конечно, будет большим камнем в огород разработчика), то все сохранится. Но маловероятно что так.
1) Если форма одна или текст должен быть везде одинаковым, можете просто переопределить языковую константу кнопки через админку.
2) Если форм несколько и тексты кнопки в них должны отличаться, то нужно создать альтернативный макет для каждой такой формы и в нем прописать текст кнопки, а затем выбрать созданный макет в настройках модуля.
КОД:
document.addEventListener('DOMContentLoaded', () => {
document.addEventListener('wjcOnFormAfterSubmit', (form) => {
let formdata = new FormData(form.detail.closest('form'));
console.log(formdata);
window.open('ССЫЛКА', '_blank');
});
});
Можно ещё маленький вопрос? Где в этом коде прописать ID формы, а то файл открывается у всех форм?
Спасибо.
Подскажите, а можно сделать кнопку вызова формы справа или слева прилипающую (плавающую)?
The requested URL was not found on this server." это при всплывающей форме, при встроенной все отображается и работает без проблем
Joomla 4.4.4
Заранее благодарю за ответ
1. Самый простой - используя стиль order в CSS. Делаете для общей обертки полей стиль display:flex, а потом к каждому конкретному полю добавляете стили order с нужными цифрами. Так поля встанут в нужном вам порядке.
2. Переопределяем макет вывода формы в шаблон и в нем меняем последовательность полей. Сейчас поля там выводятся в циклах. Но можно вывести и каждое отдельно, используя их имена.
3. В настройках модуля в доп.полях переопределяем основные поля (для этого нужно добавить XML-описание основного поля, используя то же имя поле и тот же тип). При этом все поля уйдут в дополнительные, а основные исчезнут. Но этот способ я бы рекомендовал только если вы очень хорошо ориентируетесь в коде и точно понимаете, что произойдет.
Использую ваш модуль довольно продолжительное время, всем доволен, просто супер!
Спасибо вам огромное!
Подскажите, возможно как то организовать отправку письма пользователю, котрый собственно и заполнил форму (конечно, при условии, что он указал свой email)?
Если вас не пугает это, то можно довольно легко добавить такую возможность. Достаточно переопределить макет письма в ваш шаблон и добавить у него в конце код отправки еще одного сообщения (сам код вы можете посмотреть в хелпере модуля или нагуглить, там всего несколько строчек), только в поле получателя подставить данные из заполненного поля email пользователя. Эти данные будут доступны в этом макете. Текст для такого письма можно будет задать любой.
Не работает модуль, вообще ничего не происходит.
Попытался ошибку найти:
if (!responce_obj.data.data.error) {
document.dispatchEvent(new CustomEvent('wjcOnFormAfterSubmit', {detail: event.target}));
event.target.closest('form').querySelector('.modal-footer').style.display = 'none';
event.target.closest('form').querySelector('.modal-body').innerHTML = responce_obj.data.data.message;
if (ya_counter && event.target.closest('form').getAttribute('data-ym-aimid')) {
ym(ya_counter, 'reachGoal', event.target.closest('form').getAttribute('data-ym-aimid'));
}
}
К сожалению, в последнее время часто сталкиваюсь с проблемой использования стандартной маски для телефона.
Некоторые посетители вводят номер сотового не глядя, начиная с восьмёрки, в результате вместо номера +7 (960) 123-45-67 приходит номер в виде "+7 (896) 012-34-56", т.е. последняя цифра обрезается.
Подскажите, возможно ли изменить маску так, чтобы восьмёрка в начале номера игнорировалась?
Смысл вот в чем:
1) Скрипт маски - сторонний. Он работает сам по себе и не связан с модулем обратной связи (модуль его использует, но он может работать и без модуля).
2) Скрипт маски устарел (если можно так сказать). Он имеет версию 1.5, а на текущий момент разработчик выпустил версию 3+. Это никак не влияет на его работоспособность, но документацию к нему найти сложнее.
Что нужно сделать:
1) Немного разбираться в JS. Вот здесь часть исходника скрипта маски:
https://github.com/beholdr/maska/blob/v1/src/maska.js
В нем вы можете найти поиском по файлу триггеры, которые разработчик включил в код. Они позволяют вмешаться своим кодом в код маски, не изменяя файл кода маски (по аналогии с плагинами Joomla). Найти триггеры можно по тексту: "dispatch".
2) Далее, вы можете написать в вашем файле JS код, который будет вмешиваться в плагин маски по одному из триггеров. Примеры такого кода написаны в этой статье для триггеров модуля обратной связи (https://wedal.ru/rasshireniya-joomla/wedal-joomla-callback-2-obnovlennaya-versiya-modulya-obratnoj-svyazi-dlya-joomla-4.html#dobavlenyjstriggerydlaraznyhsobytijmodula). Там триггеры будут использоваться по аналогии, но названия будут из файла маски.
3) Вы пишите код, который будет выполняться при вводе каждой цифры и в нем проверяете, если введена первая цифра, отличная от девятки, то нужно сбросить ввод.
Как-то так это будет работать. Звучит сложно, но по факту будет 5-6 строчек кода.
И вариант 2: Можно вообще заменить скрипт маски (без хаков). Файл скрипта маски можно переопределить в шаблон и заменить в нем код полностью любым другим скриптом маски. После этого нужно будет также переопределить в шаблон макеты форм модуля и в них подправить вызов маски (в конце макетов).
Спасибо большое за развёрнутый ответ!