Куда идем?
Wedal Joomla Callback 2

Наконец, он готов к релизу. Рад представить вашему вниманию обновленный модуль обратной связи Wedal Joomla Callback 2.

В нем учтены все пожелания, собранные за время существования Wedal Joomla Callback 1.x.

В нем добавлены новые, очень полезные функции.

Он, как всегда, имеет открытый код и распространяется бесплатно.

Встречайте…

Содержание

  1. О модуле
  2. Новые возможности Wedal Joomla Callback 2
    1. Поддержка Joomla 4+ и отказ от поддержки Joomla 3
    2. Добавлена поддержка неограниченного количества дополнительных полей разных типов, через Joomla XML Fields
    3. Добавлена возможность переопределения базовых полей
    4. Добавлена поддержка вложений
    5. Добавлена поддержка целей Яндекс.Метрики
    6. Код кнопки вызова формы максимально упрощен для использования в любом месте страницы
    7. Добавлены дополнительные возможности оформления модуля
    8. jQuery больше не требуется
    9. Добавлены JS-триггеры для разных событий модуля
    10. Возможность указать несколько получателей письма
    11. Все поля теперь используют базовые макеты Joomla, наследуют стили шаблона, могут быть переопределены в шаблон
    12. Файлы стилей и скриптов модуля теперь доступны для переопределения
    13. Добавлена возможность получения сообщения по СМС (v2.1.0+)
    14. Добавлена возможность получения сообщения в Telegram (v2.1.0+)
    15. Мелкие доработки и исправления
  3. Где скачать модуль 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+

Ниже даю ссылки на скачивание последний версий обеих веток:

Скачать Wedal Joomla Callback 2 для Joomla 4+

Скачать Wedal Joomla Callback 1.x для Joomla 3

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
Спасибо за новую версию. Красивая, кастомизируемая, особенно понравилось прикрепеление файлов, это вообще супер функция :) но есть нюансы.
1. Встроенная форма не работает. Копка Отправка срабатывает, никаких сообщений об удачной отправки не появляется. письмо на почту не приходит.
2. На Всплывающая форма глючит маска телефона.
Прежняя версия 1.2 работает прекрасно.
Виталий, пожалуйста исправляй.
0
Юрий, спасибо за обратную связь!

Проверил по пунктам:

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

2) В новой версии модуля скрипт маски используется другой. Старый скрипт использовал jQuery, а потому пришлось от него отказаться. Что именно не работает в маске? У меня все работает хорошо. Единственное отличие - в настройках модуля нужно задавать маску для телефона немного в другом формате. К примеру, вот так для российских номеров: +7 (###) ###-##-##
0
К сожалению, не работает.
Установил новую версию модуля 2.0.1 на новую чистую Joomla-4.2.6.
Встроенная форма не работает:
1. Маска "телефон" не показывается.
2. Письмо отправляется, но на почту не приходит. Всплывающего собщения об отправке тоже нет.
Посмотрел код страницы - во встроенной форме не загружаются скрипты wjcallback.css, wjcallback.js, maska.js
1
Юрий, да, обнаружен баг, из-за которого скрипты и стили не загружались при отображении на странице только встроенной формы. Исправлен в версии 2.0.2. Спасибо за репорт!
1
Обе формы работают. Загружается, отправляется. Спасибо, Виталий, респект! :)
0
При отправке формы(встроенная или всплывающая) никакого сообщения об отправке формы не появляется. При всплывающем варианте маска телефона срабатывает, при встроенном варианте нет, вводи сколько хочешь цифр. Всплывающая данные отправляет, встроенная нет. не понимаю как можно было такой продукт, не протестировав выпускать в паблик?
1
kosh2323, к сожалению, чем сложнее расширение, тем сложнее тестировать его в одиночку. Понимаю негодование. До выпуска в паблик я проверял все настройки и варианты. Но, получается, не все. Проверить все невозможно сразу, к сожалению и первые версии крупных обновлений могут содержать ошибки и проблемы, о которых я узнаю и исправляю как раз благодаря таким комментариям, как ваш.

Теперь о проблеме:
В версии 2.0.1 не загружались скрипты и стили во встроенную форму (вы спросите: как такое можно было пропустить? А вот оказывается можно. Для тестов у меня всегда опубликовано 2 экземпляра модуля: встроенный и всплывающий. Скрипты работали и для встроенного, т.к. их цеплял всплывающий). Это исправлено в версии 2.0.2. Обновитесь, пожалуйста. Проверьте, работает ли форма теперь. Маска также зависит от скриптов, а потому должна теперь тоже работать.

Спасибо за репорт, пусть и в форме негодования). Если обнаружите еще что-то - пишите. Вместе мы сделаем модуль только лучше.
1
Прошу простить, если вызвал раздражение, переустановил новую версию(скачал на зеленой кнопке, хотя в самом модуле, в админке нет информации, какая эта версия). По-прежнему всплывающий вариант - модальное окно не закрывается, так и висит, сообщений, что форма отправлена тоже нет, с встроенным вариантом тоже самое, сами данные формы отправляются в обоих вариантах. Потестирую, если надо, пишите прям на почту, без проблем.
0
kosh2323, ничего страшного. Все нормально. Вы точно обновились до версии 2.0.2? Посмотреть версию можно в разделе: Расширения -> Управление.
По описанию похоже, что у вас возникает какая-то ошибка JS, которая блокирует форму. Если есть возможность посмотреть в живую, пришлите мне ссылку на страницу с формой ответом на этот комментарий или в мессенджер. Посмотрю и разберемся, в чем проблема.
0
Приветствую, спасибо за ответ и желание разобраться, ссылку прислать не могу, делаю на локальном, перекачал, переустановил, версия 2.0.2 точно, и ничего не изменилось, проблемы те же, версия Joomla 4.2.6, Шаблон умолчальный Кассиопея, OpenServer PHP 8.1. После загрузки скриптов модуля грузятся только ещё 2, см. скрин.
_https://dropmefiles.com/vRheD
0
kosh2323, нашел и исправил ошибку, которая, вероятно, была у вас. В запрос на отправку формы не передавался Itemid страницы, таким образом, в случае, когда модуль был привязан не ко всем страницам, а только к некоторым пунктам меню, возвращалась ошибка.

Обновите модуль до версии 2.0.3. Проверьте повторно (также в новом приватном окне или с очисткой кэша браузера).

Большая благодарность за репорт! Это был серьезный баг, который я, к сожалению, не увидел, т.к. тестировал модуль с привязкой ко всем страницам. Теперь он исправлен.
0
Виталий, спасибо вам за ваши разработки! Модуль супер!
Подскажите, каким образом подключается всплывающая форма с собственной кнопкой?
Тег ссылки с параметром data-id и классом "wjcallback-link" разместил нужном месте модуля (переопределение стандартного mod_categoty). Если модуль WJC опубликован без указания позиции, то кнопка не работает. Если публикую его в любой доступной позиции, то работает, но при этом отображается и собственная кнопка.
Если добавляю кастомный шаблон для WJC (в переопределениях делаю копию файлов default и default_popupform c именами custom и custom_popupform), удалив при этом в файле custom код вывода кнопки и выбираю для модуля этот шаблон (custom), то тоже не работает.
Решил проблему удалением кода кнопки в файле default и назначением для модуля макета "по умолчанию", но что-то мне подсказывает что это не правильно))
И ещё. Почему-то не работает параметр "показывать блок согласия с допусловиями". При включении, в форме не отображается.
0
Сергей,

1) Насчет ручного размещения кнопки.

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

Далее - да, была проблема, что нельзя было отключить базовую кнопку в модуле. Это было неудобно. Исправил это в версии 2.0.3. Теперь есть возможность отключать базовое отображение кнопки для вызова всплывающего окна через опцию: Скрывать кнопку вызова формы?. После обновления вы найдете ее в главном окне настроек.

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

2) Насчет блока согласия с доп. условиями.
Это был баг. Блок показывался только при наличии дополнительных полей. Он исправлен в версии 2.0.3. Благодарю за информацию о проблеме!
0
Обновился до версии 2.0.3 после отправки формы, модальное окно выводится, по нажатии закрывается, но блок согласия, если указывать какой-то материал, то выводится совсем не тот, указываю разные материалы, выводится один и тот же и совсем не тот. Ссылка формируется вот такая /index.php?view=article&id=3:kontakty&catid=8 учитывается ли то, что если ссылка будет в формате ЧПУ? Таких ссылок нет на сайте, а все в виде test.ru/kontakty.html
1
kosh2323, проверил. Ссылка формировалась некорректно. Исправлено в версии 2.0.4, обновитесь. Еще раз спасибо за информацию!

Что касается ЧПУ - ссылка будет формироваться в таком виде, когда выбранная статья привязана к пункту меню. Т.е. создаете статью на условия, привязываете к пункту меню, после выбираете в модуле. Ссылка будет SEF.
0
Да, теперь работает, супер, и всё же есть пожелания:

1. В настройках есть пункт "Показывать маску ввода номера", но по факту она ведь не показывается, просто когда начинаешь вводить номер, тогда только не удастся ввести больше цифр. По факту пользователь не видит, а что если он решит вводить телефон отличный от мобильного - 111-11?
2. Если вообще отключить маску вводу, то проверки вообще не происходит, можно вводить любой текст и отправлять, отсутствует проверка на ввод цифр, хорошо бы ввести, хотя бы и с регулярными выражениями, например разрешено ()-1-9+, максимально - столько-то символов. Ведь, если включено поле ввода E-mail, то проверка на ввод @ есть, поле проверяется на корректность ввода.
3. Вопрос капчи, скорее всего об этом думали....не будут ли спамщики использовать эту форму...?
0
kosh2323, по пунктам:

1) Вопрос с маской неоднозначен. Не так просто подобрать хороший скрипт маски, особенно после отказа от jQuery. Маски на чистом JS довольно большие и часто включают много лишнего. Я перебрал много скриптов и в итоге остановился на том, который вы видите сейчас. У него небольшой размер и функционал, схожий с jQuery masked input, который был в старой версии. Использование именно этой маски в модуле - не догма. Вы можете отключить ее в настройках и подключить любую другую. Или же можно вообще переопределить файл маски в шаблон и заменить его содержимое.

2) У поля телефона тип tel. В спецификации HTML5 для этого типа поля есть атрибут pattern, в котором вы можете задать регулярное выражение. Я не стал добавлять его умышленно, дабы обеспечить бОльшую гибкость, но вы всегда можете переопределить поле телефона через дополнительные поля и добавить pattern с той регуляркой, которая требуется.

3) Капча не нужна. По опыту прошлой версии модуля - спам не проходит. Форма отправляется средствами AJAX, проверяет токен сессии. Большинству ботов она не по зубам и без капчи, по крайней мере на сегодня.
1
1. Хорошо бы вывести маску в плейсхолдер, чтобы пользователь видел в каком формате он должен вводить, в настройках то можно вывести пустое поле для ввода плейсхолдера, данные из него использовать для проверки, так ведь можно?

2. Тоже самое, замечательно было бы в настройках вывести поле "pattern" для задания разрешенных символов и их количества.

Может конечно это неудобно и нет желания заморачиваться, но сейчас рассуждаю как пользователь. Понятно, что можно там переопределить, дописать, допилить. Но хочется, чтобы Ваш продукт был максимально удобным. Спасибо.
1
kosh2323,

1) Согласен. Добавил в список доработок.

2) Это вряд ли имеет смысл, т.к. маска как раз и выполняет задачи pattern. Но, как верно указали в комментариях ниже, паттерн маски должен взаимодействовать с валидатором J, чтобы не было ситуаций, когда телефон по маске не заполнен полностью, а валидация поля проходит и форма отправляется.
0
Большое спасибо! Обновил.
Ещё наблюдение/пожелание. Мне кажется было бы полезно добавить возможность указания регулярных выражений для полей (хотя бы для базовых Имя и Комментарий ). Атрибут pattern в дополнительных полях видимо не обрабатывается, по крайней мере у меня не получилось его использовать.
0
Сергей, для собственной обработки полей вы можете использовать JS-триггеры, добавленные в новой версии модуля. Для данной задачи подойдет wjcOnFormBeforeSubmit. Он позволяет отменять отправку формы, если возвращает false (пример использования есть в этой статье). Но это всё на стороне клиента. На стороне сервера, по идее, должны отрабатывать фильтры полей Joomla. Если нет, то можно попробовать сделать плагин, т.к. для валидации полей на стороне сервера средствами Joomla наверняка должны быть системные триггеры.
1
Маска телефона не выводится и не работает.
Версия последняя. Ж4.
0
Сергей, на тестовом сайте сейчас проверил, на базовом шаблоне Cassiopea - все работает. Возможно у вас какой-то конфликт скриптов, или же в настройках модуля просто не включили маску. Если есть живой сайт - присылайте ссылку в ответном комментарии - я посмотрю.
0
Чистая 4.2.6 на локалке + модуль. В поле тел до ввода не выводится код страны из маски. Он появляется только при вводе первой цыфры. Это неправильно. В маске вида +11 1## ### ## ## форма отправляется даже если ввести не все цыфры.
0
Сергей, спасибо за ценные замечания. Всё по делу.

Валидация поля телефона, которое заполнено не полностью, проходит, т.к. валидация используется стандартная от Joomla, а той достаточно, чтобы просто были введены данные. Здесь нужно будет довести до ума взаимодействие маски с валидацией J. Я добавил эту задачу в план доработок. Это может быть не так быстро, но со временем сделаю. А пока вы можете добавить такую проверку, используя JS-триггер wjcOnFormBeforeSubmit.
1
Какой отличный модуль и как не хватает современной анимированной кнопки.
Вот все что нужно есть в нем, кроме вот этой кнопочки)
Может сделаете?
0
Ветал, что такое "анимированная кнопка"?
0
вот демо:
-
1
Ветал, понял. Такая кнопка - это исключительно вопрос стилей. Вы можете скопировать CSS-стили с любого сайта, даже с этого демо, добавить в свой шаблон и указать класс кнопки, вот и всё. Отдельно заносить это в настройки модуля нет никакого смысла.
1
Так и сделал, Спасибо!
0
Если включена маска, то телефон ограничивается маской, но в тоже врем позволяет отправить форму с меньшим количество символов...

Как это исправить?
2
limonchik, уже писал выше. Пока только или через переопределения JS модуля или через JS-триггер wjcOnFormBeforeSubmit. Второе предпочтительнее. Проблему добавил в список задач. Постараюсь исправить в ближайшем обновлении.
3
Виталий Здравствуйте. В новой версии для joomla 4 если в ссылке вызова формы присутствует любой html тег например span + текст, то при попытке нажать на нее форма вызывается без полей. Один заголовок и кнопка отправить. Однако если попытаться нажать в пустое место этой ссылки все нормально инициализируется.
1
Guest, это баг в JS модуля, который пока еще не исправлен. Клик ловит самый внутренний элемент кнопки, если в нем содержится html-код и пытается найти в атрибуте data-id ID модуля, но там его нет. Если у вас простой html внутри, например, картинка, добавьте к ней атрибут data-id с id модуля и все будет работать. В ближайшем обновлении я исправлю эту проблему.
1
Добрый вечер Виталий, подскажите пожалуйста можно ли как-то получить html ссылку на данный модуль обратного звонка при нажатии, чтобы появилась форма.
Хочу прописать эту ссылку в модуле "Floating Buttons" от разработчика: TemplatePlazza, но поле под ссылку там только стандартный Enter url.
1
Дмитрий, если вы можете ввести только стандартный URL, то, к сожалению, никак. Для работы модуля вам нужно также добавить к ссылке data-атрибут с ID экземпляра вызываемого модуля. Иначе скрипт не поймет экземпляр с какими настройками вызывать, ведь копий модуля в админке может быть несколько.

Вы можете попробовать задать URL, закончив его кавычкой, затем добавить атрибут с ID модуля и не закрыть кавычку после него. Если вдруг данные в этом поле не фильтруются (что, конечно, будет большим камнем в огород разработчика), то все сохранится. Но маловероятно что так.
0
Хорошо, спасибо за ответ.
0
Добрый день, подскажите, пожалуйста, а как изменить название кнопки Send на "Заказать просчет"?
0
На сегодня такой настройки нет. Вы уже не первый, кто про это спрашивает, а потому добавлю ее в ближайшем обновлении. Сейчас вы можете изменить текст кнопки одним из способов:

1) Если форма одна или текст должен быть везде одинаковым, можете просто переопределить языковую константу кнопки через админку.

2) Если форм несколько и тексты кнопки в них должны отличаться, то нужно создать альтернативный макет для каждой такой формы и в нем прописать текст кнопки, а затем выбрать созданный макет в настройках модуля.
0
День добрый, установил модуль на сайт, заявки поступают на почту, а вот смс и телеграмм нет, что делать?
0
Для заявок через СМС и в Телеграмм необходимы доп.настройки/аккаунты. Описание есть в настройках модуля.
0
Здравствуйте. С вашей помощь сделал открытие файла после отправки формы с помощью дополнительного кода. Спасибо большое.
КОД:


document.addEventListener('DOMContentLoaded', () => {
document.addEventListener('wjcOnFormAfterSubmit', (form) => {
let formdata = new FormData(form.detail.closest('form'));
console.log(formdata);
window.open('ССЫЛКА', '_blank');
});
});


Можно ещё маленький вопрос? Где в этом коде прописать ID формы, а то файл открывается у всех форм?
Спасибо.
0
Антон, код триггера будет выполняться в любой форме. Чтобы выполнять его в какой-то конкретной, внутри вы должны просто добавить проверку IF и сравнить ID модуля, который передастся в form с тем, который вам нужен (можно посмотреть в админке), а уже внутри условия выполнять код открытия ссылки.
0
Супер! Уважение и поклон Вам!
Подскажите, а можно сделать кнопку вызова формы справа или слева прилипающую (плавающую)?
0
Оформление кнопки вызова модуля - это исключительно вопрос стилей CSS. Вы можете добавить в CSS-файл вашего шаблона стили для любого цвета и положения кнопки на странице. Также можно скрыть кнопку по умолчанию и добавить свою путем вставки html-кода. Пример есть в этой статье.
1
Доброго, как работает на j5?
1
Борис, сильно не тестировал, но по отзывам людей использующих, все хорошо работает.
0
Добрый день, помогите если не сложно, опубликовал модуль на локальном сервере при нажатии на кнопку выдает ошибку "Not Found
The requested URL was not found on this server." это при всплывающей форме, при встроенной все отображается и работает без проблем
Joomla 4.4.4
Заранее благодарю за ответ
0
Евгений, посмотрите в отладчике браузера (F12) AJAX-запрос, который происходит при клике на кнопку вызова всплывающей формы. Возможно там проблема с доменом из-за локального адреса.
0
Дополнительные поля всегда выводятся под основными. Подскажите где и что переопределить, чтобы выводить их над основными полями в форме или выставлять свой порядок полей (как это например реализовано в меню, где пункты подменю можно передвигать)
0
Радмир, есть несколько вариантов:

1. Самый простой - используя стиль order в CSS. Делаете для общей обертки полей стиль display:flex, а потом к каждому конкретному полю добавляете стили order с нужными цифрами. Так поля встанут в нужном вам порядке.

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

3. В настройках модуля в доп.полях переопределяем основные поля (для этого нужно добавить XML-описание основного поля, используя то же имя поле и тот же тип). При этом все поля уйдут в дополнительные, а основные исчезнут. Но этот способ я бы рекомендовал только если вы очень хорошо ориентируетесь в коде и точно понимаете, что произойдет.
0
Добрый день!
Использую ваш модуль довольно продолжительное время, всем доволен, просто супер!
Спасибо вам огромное!
Подскажите, возможно как то организовать отправку письма пользователю, котрый собственно и заполнил форму (конечно, при условии, что он указал свой email)?
0
Олег, по умолчанию такой возможности нет, т.к. это потенциальная уязвимость - ведь так злоумышленник, зная адрес потенциальной жертвы, может отправлять ей любые сообщения от имени вашего сайта, просто подставляя его адрес в поле получателя (поле email).

Если вас не пугает это, то можно довольно легко добавить такую возможность. Достаточно переопределить макет письма в ваш шаблон и добавить у него в конце код отправки еще одного сообщения (сам код вы можете посмотреть в хелпере модуля или нагуглить, там всего несколько строчек), только в поле получателя подставить данные из заполненного поля email пользователя. Эти данные будут доступны в этом макете. Текст для такого письма можно будет задать любой.
0
Здравствуйте!
Не работает модуль, вообще ничего не происходит.
Попытался ошибку найти:
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'));
}
}
0
Михаил, напишите текст ошибки. Или пришлите ссылку на живой сайт с модулем, где я могу увидеть проблему.
0
Виталий, здравствуйте! Спасибо большое за ваш модуль!
К сожалению, в последнее время часто сталкиваюсь с проблемой использования стандартной маски для телефона.
Некоторые посетители вводят номер сотового не глядя, начиная с восьмёрки, в результате вместо номера +7 (960) 123-45-67 приходит номер в виде "+7 (896) 012-34-56", т.е. последняя цифра обрезается.
Подскажите, возможно ли изменить маску так, чтобы восьмёрка в начале номера игнорировалась?
0
Да, сталкивался с такой проблемой на некоторых клиентских сайтах. Здесь я не вижу идеального решения, т.к. люди могут как набирать номер с восьмерки, так и без него, а кто-то вообще пытается написать +7. Самый простой вариант: в настройках модуля добавьте к маске одну лишнюю цифру. Так, по крайней мере, вы сможете в любом случае определить верный номер пользователя, даже если он введет сначала восьмерку.
0
Т.е. без радикальных правок кода скрипта не получится игнорировать ввод любых символов, пока не нажата цифра 9?
0
Думаю, что получится. Даже без хаков. Но. Нужно будет разобраться с кодом маски.
Смысл вот в чем:
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: Можно вообще заменить скрипт маски (без хаков). Файл скрипта маски можно переопределить в шаблон и заменить в нем код полностью любым другим скриптом маски. После этого нужно будет также переопределить в шаблон макеты форм модуля и в них подправить вызов маски (в конце макетов).
0
С JS знаком, но на самом начальном уровне. Будет повод вникнуть поглубже. Буду разбираться.
Спасибо большое за развёрнутый ответ!
0
Доброе время суток. Окно удобное, но не отправляется почему то на почту (версия 2.1.0, joomla 5)
1
Дмитрий, первым делом проверьте, что сайт вообще отправляет письма. Зайдите в общие настройки Joomla, найдите раздел настроек почты, нажмите кнопку "Отправить тестовое сообщение". Убедитесь, что оно отправлено и что пришло. Если все так, будем разбираться дальше.
0
Нашёл в чем проблема гугл почта только отправлялась). Капчу не могу найти или надо подгружать стороннюю?
1
Дмитрий, капчи нет. Она не нужна в этой форме, по крайней мере пока спам не проходит, т.к. форма отправляется через JS с проверкой токена.
0
Еще вопрос, можно ли сделать маску на имена, чтобы не вбивались цифры в имя ?
1
Дмитрий, да. Можно посмотреть описание библиотеки маски вот здесь: https://github.com/beholdr/maska/tree/v1