Представляем
модуль для DLE UniForm master универсальная ajax-форма для
DataLife Engine, не использует БД, удобство и быстрота с легкой настройки. Это многофункциональная ajax-форма разработана ПафНутиЙ обладает всеми тегами DataLife Engine и даже новыми, что не возможно использовать в формах обратной связи с другим плагинами и скрипта на JS.
Не использует БД. Для работы модуля не требуется дополнительное соединение с БД и он не хранит данные из форм.
Скорость работы. За счёт простоты реализации удалось достичь приемлемой скорости работы.
Лёгкость настройки и стилизации. Все настройки модуля, оформление email-сообщения и самой формы вынесены в файлы шаблона, а это значит, что вы можете кастомизировать внешний вид не только формы, но и email-сообщения так, как этого требует дизайн.
AJAX вызов и отправка форм. Это даёт максимальную защиту от автоматических заполнений и не обременяет пользователя разгадкой капчи.
Если вы хотите получить преимущества от емаил рассылки и вы задаетесь вопросом: Что такое e-mail рассылка? Какие важные факторы следует учесть при проведении e-mail рассылки?, то советуем почитать статью по следующему адресу
http://abc-almaty.kz/. Веб-студия ABC Almaty долгое время помогает в продвижение сайтов в Алмате, а в статье выше приведены аргументы о преимуществах e-mail рассылки и недостатках, о которые следует знать каждому пользователю своего ресурса.
Требования к установке Версия
DLE: 10.2 и выше (возможно будет работать и на более старых версиях), проверен на
дле 10.6 Прямые руки.
Установка
Скачать актуальную версию модуля
Распаковать содержимое папки upload в корень сайта.
Открыть {THEME}/main.tpl и в нужном месте, перед закрывающим тегом
</head>
вставить подключение стилей и скриптов модуля:
<!-- DLE UniForm -->
<link rel="stylesheet" href="/engine/classes/min/index.php?charset=utf-8&f=/templates/Default/uniform/css/uniform.css&01" />
<script type="text/javascript" src="/engine/classes/min/index.php?charset=utf-8&f=/templates/Default/uniform/js/jquery.magnificpopup.min.js,/templates/Default/uniform/js/jquery.ladda.min.js,/templates/Default/uniform/js/jquery.form.min.js,/templates/Default/uniform/js/uniform.js&01"></script>
<!-- /DLE UniForm -->
Далее в нужном шаблоне, в нужном месте вставить кнопку вызова ajax-окна формы:
<span class="uf-btn" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "feedback"}'>Обратная связь</span>
где feedback — Папка с шаблонами формы.
Готово! Остаётся нажать на кнопочку.
Форма обратной связи
Форма обратной связи, с ошибками
Сообщение об успешной отправке сообщения из формы обратной связи
Форма заказа звонка
Форма заказа звонка, в процессе отправки
Email, с заказом звонка
Тестовая форма с примером обработки результатов отправки формы
Описание и примеры конфигурации вызова модуля можно найти в файлах, с именем config.tpl.
Описание и примеры параметров формы можно найти в файле {THEME}/uniform/test/form.tpl.
Описание и примеры параметров email-сообщения можно найти в файле {THEME}/uniform/callback/email.tpl.
templateFolder — Папка с шаблонами формы формы. Указывается подпапка, в папке uniform текущего шаблона сайта, в которой должны лежать файлы config.tpl, form.tpl и email.tpl. Например шаблон формы обратной связи (feedback) выглядит так:
/templates/Default/uniform/
L-- feedback/
+-- config.tpl - файл конфига
+-- email.tpl - файл email-сообщения
L-- form.tpl - файл вывода формы
nocache — Отключение кеширования модуля.
debug — Дебаг. Выводится распечатка конфига, массива данных, переданных через $_POST и массива данных, отправляемых на email.
required — Обязательные поля. Указываются имена полей, обязательных для заполнения.
hidden — Разрешенные скрытые поля. Такие поля передаются из атрибута data-uf-settings кнопки открытия формы. Например, если к кнопке открытия формы прописать
data-uf-settings='{"formConfig": "feedback", "fields":{"field1": "value1", "field2": "value2", "field3": "value3"}}'
и при этом в конфиге будет вот такая запись:
hidden = field1,field3
то поле field2 не будет выведено в форму. Это сделано для безопасности работы модуля.
sendmail — Отправлять email при заполнения формы?
emails — Адреса почты, на которые необходимо отправлять уведомление. Необходимо прописать один или несколько email-адресов, через запятую.
selectFields — Поля типа select. Необходимо перечислить через запятую имена всех полей, являющихся селектами.
checkboxFields — Поля типа checkbox. Необходимо перечислить через запятую имена всех полей, являющихся чекбоксами.
radioFields — Поля типа radio. Необходимо перечислить через запятую имена всех полей, являющихся радиокнопками.
Список тегов, поддерживаемых в шаблоне form.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
{* текст *} — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в браузер.
[error]текст[/error] — выводит текст, если форма содержит ошибки заполнения.
[success]текст[/success] — выводит текст, если форма удачно отправлена.
[form]текст[/form] — выводит текст, если форма только что открыта, или отправлена с ошибками.
[debug]{debug}[/debug] — выводит дебаг.
[uf_token_error]текст[/uf_token_error] — выводит текст, если происходит попытка межсайтовой подделки запроса (CSRF Attack) или если конфиг формы изменился во время заполнения формы.
[uf_email_error]текст[/uf_email_error] — выводит текст, если поле имеет имя email, является обязательным и не проходит валидацию (наличие символа @ и точки).
[uf_default_value]текст[/uf_default_value] — выводит текст, если форма открыта впервые.
{uf_filed_X} — выводит данные, переданные в форму из текстовых полей в случаи ошибочного заполнения.
[uf_field_X="Y"]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
[uf_error_X]текст[/uf_error_X] — выводит текст, если текстовое поле содержит ошибку.
[uf_select_X="Y"]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
[uf_select_X_Y]selected[/uf_select_X_Y] — Выводит текст, если в селекте X отмечен пункт со значением Y. Является вариацией предыдущего тега.
[uf_checkbox_X="Y"]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
[uf_checkbox_X_Y]checked[/uf_checkbox_X_Y] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y. Является вариацией предыдущего тега.
[uf_radio_X="Y"]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
[uf_radio_X_Y]checked[/uf_radio_X_Y] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y. Является вариацией предыдущего тега.
Список тегов, поддерживаемых в шаблоне email.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
{* текст *} — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в сообщении.
[header]текст[/header] — Тема письма.
{all_mail_fields} — выводит все поля, переданные из формы в удобном, для последующей вставке в шаблон, виде.
[uf_field_X]текст[/uf_field_X] — выводит текст, если текстовое пол X заполнено.
{X} — выводит данные, переданные в форму из текстового поля X.
[uf_field_X="Y"]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
[uf_select_X="Y"]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
[uf_checkbox_X="Y"]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
[uf_radio_X="Y"]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
{send_date} — выводит дату отправки сообщения из формы, отформатированную в соответсвии с настройками DLE.
{current_page} — выводит URL страницы, с которой было отправлено сообщение.
[news_id]{news_id}[/news_id] — ID новости (если есть поле с name="newsId").
[news_autor]{news_autor}[/news_autor] — Логин автора новости (если есть поле с name="newsId").
[news_title]{news_title}[/news_title] — Заголовок новости новости (если есть поле с name="newsId").
[news_email]{news_email}[/news_email] — Email автора новости (если есть поле с name="newsId").
{site_home_title} — Выводит название сайта из настроек DLE.
{site_http_home_url} — Выводит адрес сайта из настроек DLE.
{site_short_title} — Выводит краткое название сайта из настроек DLE.
[user_name]{user_name}[/user_name] — Выводит логин пользователя, отправившего сообщение.
[user_fullname]{user_fullname}[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение.
[user_email]{user_email}[/user_email] — Выводит email пользователя, отправившего сообщение.
[user_foto]{user_foto}[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение.
[user_land]{user_land}[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле "Место жительства".
Теперь если в форме есть заполненное поле с `name="header"`, такое поле будет автоматически подставлено в тему письма.
Исправлена ошибка на DLE 10.5+ с невозможностью указать email отправителя из формы.
Исправлена ошибка с экранированием кавычек в письме.
Если пользователь авторизован, то тег {uf_field_email} при открытии формы автоматически заменится на его email.
Убран тег {send_date=D.m.Y} т.к. он оказался нерабочим.
Исправлено некорректное поведение тега {send_date}.
Добавлен новый параметр конфигурации sendAsPlain — Отправлять сообщение как простой текст. Теперь можно отправлять письма как простые текстовые сообщения, без обработки html.
Добавлен новый параметр конфигурации sendToAuthor — Отправить письмо автору новости, если есть поле с name="newsId" и если автор разрешил получение писем с сайта.
Реализована возможность отправлять в письме данные из новости. Для этого необходимо передать в форму поле newsId. Пример шаблона в папке newsauthor.
Реализована возможность отправки сообщения на email автора новости. Для этого необходимо передать в форму поле newsId и в конфиге прописать sendToAuthor = y. Пример шаблона в папке newsauthor.
[news_id]{news_id}[/news_id] — ID новости (если есть поле с name="newsId").
[news_autor]{news_autor}[/news_autor] — Логин автора новости (если есть поле с name="newsId").
[news_title]{news_title}[/news_title] — Заголовок новости новости (если есть поле с name="newsId").
[news_email]{news_email}[/news_email] — Email автора новости (если есть поле с name="newsId").
{site_home_title} — Выводит название сайта из настроек DLE.
{site_http_home_url} — Выводит адрес сайта из настроек DLE.
{site_short_title} — Выводит краткое название сайта из настроек DLE.
[user_name]{user_name}[/user_name] — Выводит логин пользователя, отправившего сообщение.
[user_fullname]{user_fullname}[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение.
[user_email]{user_email}[/user_email] — Выводит email пользователя, отправившего сообщение.
[user_foto]{user_foto}[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение.
[user_land]{user_land}[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле "Место жительства".
Для вывода формы непосредственно на странице достаточно прописать в нужном месте шаблона (начиная с версии 1.1):
<div data-uf-inline="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "inline"}'>
<div class="uf-inline-loading"></div>
</div>
Для Отправки сообщения автору новости необходимо прописать в шаблон краткой или полной новости (начиная с версии 1.2):
<span class="uf-btn" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "newsauthor", "fields": {"newsId": "{news-id}"}}'>Связь с автором новости</span>
v1.2 (09.01.2016)
Теперь если в форме есть заполненное поле с name="header", такое поле будет автоматически подставлено в тему письма. #12
Теперь можно отправлять письма как простые текстовые #11
Исправлена ошибка на DLE 10.5+ #14
Исправлена ошибка #10
Если пользователь авторизован, тег {uf_field_email} при открытии формы автоматически заменится на его email.
Убран тег {send_date='формат_даты'} т.к. он оказался нерабочим.
Исправлено некорректное поведение тега {send_date}.
Добавлен новый параметр конфигурации sendAsPlain — Отправлять сообщение как простой текст.
Добавлен новый параметр конфигурации sendToAuthor — Отправить письмо автору новости, если есть поле с name="newsId" и если автор разрешил получение писем с сайта.
Реализована возможность отправлять в письме данные из новости. Для этого необходимо передать в форму поле newsId. Пример шаблона в папке newsauthor. В шаблоне email-сообщения можно использовать следующие теги:
[news_id]{news_id}[/news_id] — ID новости.
[news_autor]{news_autor}[/news_autor] — Логин автора.
[news_title]{news_title}[/news_title] — Заголовок новости.
[news_email]{news_email}[/news_email] — Email автора.
Реализована возможность отправки сообщения на email автора новости. Для этого необходимо передать в форму поле newsId и в конфиге прописать sendToAuthor = y. Пример шаблона в папке newsauthor.
Добавлены новые теги для использования в шаблоне email сообщения.
{site_home_title} — Выводит название сайта из настроек DLE.
{site_http_home_url} — Выводит адрес сайта из настроек DLE.
{site_short_title} — Выводит краткое название сайта из настроек DLE.
[user_name]{user_name}[/user_name] — Выводит логин пользователя, отправившего сообщение.
[user_fullname]{user_fullname}[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение.
[user_email]{user_email}[/user_email] — Выводит email пользователя, отправившего сообщение.
[user_foto]{user_foto}[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение.
[user_land]{user_land}[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле "Место жительства".
v1.1 (02.07.2015)
Добавлены теги для вывода даты отправки сообщения в email. Теги работают в шаблоне email.tpl. Использование: {send_date} или {send_date=D.m.Y}.
Добавлена возможность вывода формы инлайново. Форма подгружается по-прежнему на ajax, но выводится сразу после загрузки страницы. Подробности в шаблоне inline
Добавлен тег {current_page} для вывода URL страницы, с которой была вызвана форма. Используется только в шаблоне email.tpl.
v1.0 (10.05.2015)
Первый публичный релиз.
v0.3 (05.05.2015)
Изменён принцип хранения шаблонов модуля. Теперь все шаблоны каждой из форм хранятся в папке, заданной через конфиг (formConfig), в переменной templateFolder.
Например шаблон формы обратной связи (feedback) выглядит так:
/templates/Default/uniform/
L-- feedback/
+-- config.tpl - файл конфига
+-- email.tpl - файл email-сообщения
L-- form.tpl - файл вывода формы
Добавлены теги для вывода контента формы по условию, в зависимости от значения, переданного в форме. Подробное описание в файле Default/uniform/test/form.tpl
Добавлены теги для вывода данных в email-сообщение по условию, в зависимости от значения, переданного в форме. Подробное описание в файле Default/uniform/callback/email.tpl
v0.2 (04.05.2015)
Изменена обработка контента шаблона email-сообщения, теперь символ переноса строки (\n) не заменяется на
в тексте шаблона, а только в тексте пришедших полей.
В шаблон email-сообщения добавлены теги квадратных скобках для вывода информации, заключенной в них только в том случаи, если поле заполнено. Например для вывода поля с имененм name можно прописать так:
[name]Имя: {name}[/name]
В шаблоне email-сообщения теперь можно использовать тег {all_mail_fields} для вывода всех полей, которые приходят из формы. Очень удобно для последующего детального составления шаблона. Можно просто скопировать нужные теги и вставить в шаблон.
Пример для формы заказа звонка:
[phone]{phone}[/phone] : 456-789
[name]{name}[/name] : Иван
[calltime]{calltime}[/calltime] : anytime
Добавлена обработка селектов, теперь при неудачной отправке формы значение селекта сохранится. Для этого добавлены новые теги, выводящие текст в них, если option был выбран. Составление тега происходит по следующей схеме: [uf_select_name селекта_value элемента]
Пример:
<select name="calltime" class="uf-input">
<option value="anytime" [uf_select_calltime_anytime]selected[/uf_select_calltime_anytime]>в любое время</option>
<option value="9-12" [uf_select_calltime_9-12]selected[/uf_select_calltime_9-12]>c 9:00 до 12:00</option>
<option value="12-15" [uf_select_calltime_12-15]selected[/uf_select_calltime_12-15]>c 12:00 до 15:00</option>
<option value="15-18" [uf_select_calltime_15-18]selected[/uf_select_calltime_15-18]>c 15:00 до 18:00</option>
</select>
Добавлена обработка чекбоксов, теперь при неудачной отправке формы отмеченные чекбоксы сохранятся. Для этого добавлены новые теги, выводящие текст в них, если чекбокс был отмечен. Составление тега происходит по следующей схеме: [uf_checkbox_name чекбокса_value чекбокса]
Пример:
<input type="checkbox" name="checkboxName[]" value="one" [uf_checkbox_checkboxName_one]checked[/uf_checkbox_checkboxName_one]> Чекбокс 1
<input type="checkbox" name="checkboxName[]" value="two" [uf_checkbox_checkboxName_two]checked[/uf_checkbox_checkboxName_two]> Чекбокс 2
<input type="checkbox" name="checkboxName[]" value="tree" [uf_checkbox_checkboxName_tree]checked[/uf_checkbox_checkboxName_tree]> Чекбокс 3
Добавлена обработка радиокнопок, теперь при неудачной отправке формы отмеченные радиокнопки сохранятся. Для этого добавлены новые теги, выводящие текст в них, если радиокнопка была отмечена. Составление тега происходит по следующей схеме: [uf_radio_name радиокнопки_value радиокнопки]
Пример:
<input type="radio" name="sendTo[]" value="one" [uf_radio_sendTo_one]checked[/uf_radio_sendTo_one]> Радиокнопка 1
<input type="radio" name="sendTo[]" value="two" [uf_radio_sendTo_two]checked[/uf_radio_sendTo_two]> Радиокнопка 2
<input type="radio" name="sendTo[]" value="tree" [uf_radio_sendTo_tree]checked[/uf_radio_sendTo_tree]> Радиокнопка 3
Добавлены новые теги [uf_default_value]текст[/uf_default_value], выводящие текст между ними, если форма только что открыта. Такие теги полезны, если требуется изначально сделать выбранным какой либо пункт селекта, или чекбокс, или добавить в поле свой текст, который не должен переписывать собой данные при неудачной отправке формы.
Исправлена ошибка, из-за которой пи первом ткрытии формы не обрабатывались теги ошибки заполнения email:
[uf_email_error][/uf_email_error].
Добавлен новый тег {* любой текст *} для возможности оставлять комментарии в шаблонах, которые не должны попадать на сайт. (аналог комментариев в php).
v0.1 (25.04.2015)
Первый релиз модуля.
Не подходит стандартная форма обратной связи? Нужна возможность использовать свои поля? Нужна защита от ботов и лёгкая настройка без использования БД? Тогда этот модуль для Вас!
Автор: ПафНутиЙ
githubЖду ваших отзывов!
Обновлено: 9 января 2016
(Модуль обновлён до версии 1.2)
Версия DLE : 10.2 и выше (возможно будет работать и на более старых версиях),
Скачать
бесплатные модули для дле, как модуль для DLE UniForm master
DLE-UniForm-master.zip [87,14 Kb] (cкачиваний: 185)