Содержание
Bootstrap 3 форма обратной связи – три вида и модальное окно для сайта
Доброго времени суток, мои верные читатели и гости сайта. В сегодняшней публикации мы поговорим о знакомых вам формах регистрации, заказа товаров, входа на сайт и других. Все это в общем называется в Bootstrap 3 форма обратной связи. Эту штуку действительно полезно знать и уметь пользоваться.
Поэтому после прочтения статьи вы будете уметь создавать три вида простых форм, научитесь их настраивать, ознакомитесь со встроенными типами полей и с модальными окнами, а также сможете закрепить полученный теоретический материал на практике. Ну что ж, давайте приступать к обучению!
Формы. Какие они бывают?
Фреймворк Bootstrap поддерживает три вида форм, которые отличаются друг от друга выравниванием полей ввода данных. К ним относятся вертикальная, горизонтальная и встроенная.
Все они могут использовать встроенные типы текстовых полей, в которые входят: text, date, email, search, color, time и т.д. С их помощью осуществляется валидация введенной информации и при некорректном ее написании пользователю выводится сообщение с указанием на ошибки.
А теперь давайте подробнее разберем каждый тип форм.
Vertical Forms
По умолчанию в фреймворке выбраны вертикальные типы форм, так как их чаще всего можно встретить на различных веб-сайтах. В этом случае вначале расположено название поля, а ниже само текстовое поле ввода или другие элементы ввода информации.
В качестве примера я создал базовую форму с проверкой полей ввода при помощи встроенных типов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<!DOCTYPE html> <html lang="en"> <head> <title>Пример стандартной формы</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div> <h3>Вертикальная форма</h3> <form> <div> <label for="email">Email:</label> <input type="email" placeholder="Введите email"> </div> <div> <label for="pwd">Пароль:</label> <input type="password" placeholder="Введите пароль"> </div> <div> <label for="dat">Дата рождения:</label> <input type="date" placeholder="Введите дату рождения"> </div> <div> <label for="txt">Имя Фамилия:</label> <input type="text" placeholder="Введите имя и фамилию"> </div> <div> <label><input type="checkbox"> Запомнить меня</label> <button type="submit">Отправить</button> </div> </form> </div> </body> </html> |
<!DOCTYPE html> <html lang=»en»> <head> <title>Пример стандартной формы</title> <meta charset=»utf-8″> <meta name=»viewport» content=»width=device-width, initial-scale=1″> <link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css»> <script src=»https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js»></script> <script src=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js»></script> </head> <body> <div> <h3>Вертикальная форма</h3> <form> <div> <label for=»email»>Email:</label> <input type=»email» placeholder=»Введите email»> </div> <div> <label for=»pwd»>Пароль:</label> <input type=»password» placeholder=»Введите пароль»> </div> <div> <label for=»dat»>Дата рождения:</label> <input type=»date» placeholder=»Введите дату рождения»> </div> <div> <label for=»txt»>Имя Фамилия:</label> <input type=»text» placeholder=»Введите имя и фамилию»> </div> <div> <label><input type=»checkbox»> Запомнить меня</label> <button type=»submit»>Отправить</button> </div> </form> </div> </body> </html>
Inline Forms
В окнах встроенного типа все элементы расположены в одну линию (если это позволяет размер экрана). При этом объекты выравниваются по левому краю, а подписи окон и других видов элементов ввода персональной информации располагаются практически без отступов друг от друга.
Для того чтобы создать такой вид окна обратной связи, нужно добавить в код класс .form-inline. Поэтому для предыдущего примера измените строки заголовка <form> на:
<h3>Встроенная форма</h3>
<form>
Horizontal Forms
Текущий вид форм несколько отличается от двух предыдущих, во-первых, количеством элементов разметки, а во-вторых, презентацией формы.
Так, вам потребуется прописать класс .form-horizontal в теге <form> и после к каждому элементу <label> добавить класс .control-label. И это еще не все. Для реализации horizontal forms вам потребуется из своей памяти достать уже выученный вами материал из прошлых публикаций, касающийся верстки сеток фреймворка.
В прикрепленном выше примере я выделил 2 колонки под наименования полей, а 10 колонок – под само поле ввода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<!DOCTYPE html> <html lang="en"> <head> <title>Пример стандартной формы</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div> <h3>Горизонтальная форма</h3> <form> <div> <label for="email">Email:</label> <div> <input type="email" placeholder="Введите email"> </div> </div> <div> <label for="pwd">Пароль:</label> <div> <input type="password" placeholder="Введите пароль"> </div> </div> <div> <label for="dat">Дата рождения:</label> <div> <input type="date" placeholder="Введите дату рождения"> </div> </div> <div> <label for="txt">Имя Фамилия:</label> <div> <input type="text" placeholder="Введите имя и фамилию"> </div> </div> <div> <div> <div> <label><input type="checkbox"> Запомнить меня</label> <button type="submit">Отправить</button> </div> </div> </div> </form> </div> </body> </html> |
<!DOCTYPE html> <html lang=»en»> <head> <title>Пример стандартной формы</title> <meta charset=»utf-8″> <meta name=»viewport» content=»width=device-width, initial-scale=1″> <link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css»> <script src=»https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js»></script> <script src=»https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js»></script> </head> <body> <div> <h3>Горизонтальная форма</h3> <form> <div> <label for=»email»>Email:</label> <div> <input type=»email» placeholder=»Введите email»> </div> </div> <div> <label for=»pwd»>Пароль:</label> <div> <input type=»password» placeholder=»Введите пароль»> </div> </div> <div> <label for=»dat»>Дата рождения:</label> <div> <input type=»date» placeholder=»Введите дату рождения»> </div> </div> <div> <label for=»txt»>Имя Фамилия:</label> <div> <input type=»text» placeholder=»Введите имя и фамилию»> </div> </div> <div> <div> <div> <label><input type=»checkbox»> Запомнить меня</label> <button type=»submit»>Отправить</button> </div> </div> </div> </form> </div> </body> </html>
Ну а для чего же тогда модальные окна?
Для начала стоит сказать, что в Bootstrap есть такой плагин, как Modal plugin. Он как раз и отвечает за описываемый инструмент, который появляется при нажатии на кнопку. В модальном окне обычно выводится некая дополнительная информация или сообщение о произведенных действиях.
К примеру, после отправки формы регистрации (после нажатия на кнопку «Отправить») пользователю выводится сообщение «Вы успешно зарегистрированы».
Для того чтобы создать модальное окно, вам нужно реализовать программный код, который условно можно разделить на 3 части:
- Написание триггера.
При реализации кнопки в теге <button> нужно дописать
data-toggle=»modal» data-target=»#myModal»
- Создание оболочки «Modal».
Для этого в блоке необходимо установить идентификатор с тем же именем, что и в data-target. Здесь же нужно добавить класс .modal и прописать роль: role=»dialog».
Далее важно создать вложенный блок с указанием класса
class=»modal-dialog»
- Заполнение модального окна контентом.
И теперь мы перешли к последнему этапу. Создайте
<div>
и в него вносите текст сообщения. Обязательно реализуйте кнопку «Закрыть».
Закрепите теоретический материал разбором кода примера, прикрепленного ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<div> <button type="button" data-toggle="modal" data-target="#Modal">Открыть модальное окно</button> <div role="dialog"> <div> <div> <div> <button type="button" data-dismiss="modal">×</button> <h5>Внимание!</h5> </div> <div> <p>Здесь написан некий важный текстовый контент!</p> </div> <div> <button type="button" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div> </div> |
<div> <button type=»button» data-toggle=»modal» data-target=»#Modal»>Открыть модальное окно</button> <div role=»dialog»> <div> <div> <div> <button type=»button» data-dismiss=»modal»>×</button> <h5>Внимание!</h5> </div> <div> <p>Здесь написан некий важный текстовый контент!</p> </div> <div> <button type=»button» data-dismiss=»modal»>Закрыть</button> </div> </div> </div> </div> </div>
Если вы узнали что-то интересное и новое для себя, то обязательно подписывайтесь на обновления моего блога и не забывайте рассказывать о нем друзьям. До скорых встреч. Пока-пока!
С уважением, Роман Чуешов
Прочитано: 559 раз
Yii2 форма в модальном окне
Создание модального окна
Как известно, по-умолчанию к Yii2 подключаются стилевые файлы css-фреймворка Bootstrap. Это значит, что мы можем использовать все доступные в нем элементы интерфейса: выпадающие списки, слайдеры и прочее.
Часто бывает необходимо создать простое всплывающее (модальное) окно (окно, которое появляется в центре экрана и содержит в себе какую-либо информацию, при этом вся остальная часть рабочей области затемняется и становится недоступной) с какими-то данными.
Boostrap позволяет очень просто сделать это с помощью следующего кода:
Чтобы модальное окно действительно работало, сначала нужно создать кнопку, которая будет инициализировать модальное окно (кликаем по кнопке, получаем окно):
Это может быть как кнопка button , так и ссылка a , главное, чтобы элемент содержал data-атрибуты data-toggle и data-target . Первый равен значению modal , второй названию атрибута id , для связи с блоком всплывающей формы. Да, именно с решеткой # .
Сам элемент модального окна должен содержать атрибут id со значением, которое было указано в кнопке вызова окна:
Внутри блока находятся три важных элемента, которые нужно заполнять для создания интерфейса модального окна.
1) Шапка окна:
Здесь в базовом примере от Bootstrap находится заголовок формы и кнопка закрытия всей формы.
2) Контентная область окна:
Здесь также может быть любое html-содержимое: форма, таблица, текст, список и другие.
3) Подвал окна:
Здесь обычно располагаются элементы управления формой: кнопка выполнения действия окна (например, отправка формы, если она там есть) и еще одна кнопка закрытия формы.
После окончательной разметки можно получить примерно такую форму:
Как всегда, виджеты Yii2 позволяют нам сэкономить много строк кода.
Для начала подключим одноименный виджет, который идет в дистрибутиве фреймворка:
После этого разместим php-код в нужном месте страницы:
Начало блока модального окна инициализируется с помощью конструкции:
Вся разметка, которая находится между этими вызовами будет находится в контентой области модального окна, т.е. внутри блока:
Для корректной работы модального окна в инициализации формы нужно заполнить параметры:
id – атрибут для связи с кнопкой вызова формы ( data-target=»#myModal» ).
header – содержимое, которое будет выводиться в шапке модального окна:
footer – содержимое, которое будет выводиться в подвале модального окна:
Параметры header и footer должны содержать разметку, которая будет выводиться в соответствующих областях модального окна.
Это единственный неудобный момент использования виджета, но скорее всего больших блоков разметки здесь не будет и все значения можно поместить в соответствующие переменные:
Которые нужно указать при инициализации формы.
Виджет поддерживает и другие полезные параметры для создания модального окна. Исходный код виджета хорошо документирован, разобраться во всех его настройках не составит труда.
Виджет хорошо подойдет в ситуации, когда нужно быстро создать простое модальное окно. Однако, если надо создать какое-то специфично стилизованное окно, виджет не сможет в полной мере реализовать эту задачу. Придется вставлять на страницу полный вариант разметки и вызывать окно с помощью JS/jQuery.
Некогда мы выводили модальное окно с формой обратной связи на CJuiDialog для Yii 1. Делаем то же теперь в Yii 2. Но теперь используем Bootstrap 3 modal, в целом же вести всплывающую форму отправляющую письмо по ajax, в случае с Yii 2 проще. Это достаточно насущная задача, так как крайне часто требуется на сайте воткнуть кнопку «Оставить онлайн заявку» или «Перезвоните мне».
В работе форму можно посмотреть на сайте нашей школы брейк данса «Inspire».
1) Ставим кнопку, вызывающую модальное окно с формой и само окно (обычно в шаблоне главной страницы)
2) Тут же в шаблоне главной, где подключили кнопку (на весь сайт это не нужно распространять), подключаем скрипт:
3) Его создадим в папке web/scripts.
Здесь 2 события. Первое выполняется по нажатию кнопки с классом .signup и обращается к URL = «signup», который пропишем дальше в rules у urlManager. Сразу пропишем и для второго события.
Вторая функция обрабатывает отправку формы. И если получен ответ true, то выводит сообщение об успешной отправке письма и закрывает модальное окно через 4 секунды (если посетитель сам не закрыл его раньше). Если будет получен не true, а что-то другое, то это покажется в модальном окне, тут делается скрытие и обновление его .hide().fadeIn().
4) Едем дальше. В контроллере SiteController методы signup и submitsignup
Как раз первый заполняет в модельное окно форму через renderPartial. Второй метод submitsignup похож на contact – он таким же образом эту форму отправляет на email.
5) Создадим модель SignupForm.php (очень похожую на ContactForm)
6) И само представление формы
N.B. Обратите внимание, что письма по-умолчанию отправляются swiftmailer через функцию mail(). Посмотрите в настройках конфига, чтобы на рабочем проекте на сервере был выключен параметр useFileTransport . Это задаётся в настройках компонента mailer (либо закомментруйте строку, либо явно укажите ‘useFileTransport’ => false, )
Если этого не сделать, то все письма будут складываться и скапливаться в runtime/mail, а не отправляться адресату:
Вот и всё. У вас должно получиться модальное окно, появляющееся по нажатию на кнопку. В окне форма, у которой работает ajax валидация и нажав «Отправить» эти данные отправляются администратору без перезагрузки страницы!
P.S. Если кому-то будет интересно, вот как без фреймворков сразу на скриптах – Модальное окно Bootstrap 3 с формой, отправляющей email по Ajax (пригодится, если будете клепать лендинг-страницы без движков).
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Имеется модальная форма авторизации на HTML:
в нее необходимо встроить формы авторизации с Yii2. Пытался заменить строки
на
В следствии этого появляется ошибка
Call to a member function field() on null
<!DOCTYPE html> | |
<html lang=»ru»> | |
<head> | |
<meta charset=»utf-8″> | |
<title>Форма обратной связи</title> | |
<link rel=»stylesheet» href=»/feedback/vendors/bootstrap/css/bootstrap.min.css»> | |
<link rel=»stylesheet» href=»/feedback/css/main.css»> | |
<style> | |
.attachments .custom-file { | |
margin-top: .5rem; | |
} | |
</style> | |
</head> | |
<body> | |
<h2>Форма обратной связи</h2> | |
<hr> | |
<div> | |
<!— Кнопка, открывающая модальное окно —> | |
<button type=»button» data-toggle=»modal» data-target=»#feedbackFormModal»> | |
Открыть форму в модальном окне | |
</button> | |
</div> | |
<!— Форма обратной связи в модальном окне —> | |
<div tabindex=»-1″ role=»dialog» aria-labelledby=»myModalLabel»> | |
<div role=»document»> | |
<div> | |
<div> | |
<h5>Форма обратной связи</h5> | |
<button type=»button» data-dismiss=»modal» aria-label=»Close»> | |
<span aria-hidden=»true»>×</span> | |
</button> | |
</div> | |
<div> | |
<!— Форма обратной связи —> | |
<form action=»/feedback/process/process.php» enctype=»multipart/form-data» novalidate> | |
<div> | |
<div> | |
<!— Имя пользователя —> | |
<div> | |
<label for=»name»>Имя</label> | |
<input type=»text» name=»name» value=»» placeholder=»Имя» minlength=»2″ maxlength=»30″ required=»required»> | |
<div></div> | |
</div> | |
</div> | |
<div> | |
<!— Email пользователя —> | |
<div> | |
<label for=»email»>Email-адрес</label> | |
<input type=»email» name=»email» required=»required» value=»» placeholder=»Email-адрес»> | |
<div></div> | |
</div> | |
</div> | |
</div> | |
<!— Сообщение пользователя —> | |
<div> | |
<label for=»message»>Сообщение (не менее 20 символов)</label> | |
<textarea name=»message» rows=»3″ placeholder=»Сообщение (не менее 20 символов)» minlength=»20″ | |
maxlength=»500″ required=»required»></textarea> | |
<div></div> | |
</div> | |
<!— Изображения —> | |
<div data-maxfiles=»5″ data-maxsize=»512″ data-validext=»jpg, png, gif»> | |
<div>При необходимости прикрепите к сообщению изображения (максимум 5):</div> | |
<div> | |
<input type=»file» name=»attachment[]»> | |
<label>Выберите файл…</label> | |
<div></div> | |
</div> | |
</div> | |
<!— Капча —> | |
<div> | |
<img src=»/feedback/captcha/captcha.php» data-src=»/feedback/captcha/captcha.php» alt=»»> | |
<div>Обновить</div> | |
<div> | |
<label for=»captcha»>Код, показанный на изображении</label> | |
<input type=»text» name=»captcha» maxlength=»6″ required=»required» placeholder=»******» | |
autocomplete=»off» value=»»> | |
<div></div> | |
</div> | |
</div> | |
<!— Пользовательское солашение —> | |
<div> | |
<div> | |
<input type=»checkbox» name=»agree»> | |
<label for=»customCheck»>Нажимая кнопку, я принимаю условия | |
<a href=»#»>Пользовательского соглашения</a> и даю своё согласие на обработку моих персональных данных, в соответствии | |
с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных».</label> | |
</div> | |
</div> | |
<!— Сообщение —> | |
<div> | |
Исправьте данные и отправьте форму ещё раз. | |
</div> | |
<!— Индикация загрузки данных формы на сервер —> | |
<div> | |
<div role=»progressbar» aria-valuenow=»0″ aria-valuemin=»0″ | |
aria-valuemax=»100″> | |
<span>0%</span> | |
</div> | |
</div> | |
<!— Кнопка для отправки формы disabled=»disabled»—> | |
<div> | |
<button type=»submit» disabled=»disabled»>Отправить сообщение</button> | |
</div> | |
</form> | |
<!— Сообщение об успешной отправки формы —> | |
<div> | |
Форма успешно отправлена. Нажмите на | |
<a href=»#» data-form=»#feedbackForm»>ссылку</a>, чтобы отправить ещё одно сообщение. | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<script src=»/feedback/vendors/jquery/jquery-3.3.1.min.js»></script> | |
<script src=»/feedback/vendors/bootstrap/js/bootstrap.min.js»></script> | |
<script src=»/feedback/js/process-forms.js»></script> | |
<script src=»/feedback/js/main.js»></script> | |
</body> | |
</html> |
Модуль Wedal Joomla Callback – Всплывающая Форма Обратной Связи
Модуль распространяется бесплатно. Он прост в установке и настройке. Теперь вы можете получить отличную контактную форму на сайте всего в несколько кликов.
Друзья, рад представить вам свою новую разработку – модуль, реализующий всплывающую и встраиваемую форму обратной связи на сайте.
Модуль распространяется бесплатно. Он прост в установке и настройке. Теперь вы можете получить отличную контактную форму на сайте всего в несколько кликов.
Wedal Joomla Callback воплощает многие идеи, которые были у меня в голове, но не могли быть сформулированы в коде. Читайте описание. Думаю, что вам понравится!
>>> Вы можете скачать модуль по этой ссылке
Зачем нужен еще один модуль обратной связи?
Думаю, что первый вопрос, который вы зададите: зачем нужен еще один модуль обратной связи? Ведь помимо стандартной формы обратной связи Joomla есть уже готовые решения.
Дело в том, что в процессе работы над разными клиентскими сайтами мне постоянно требовался простой и легкий модуль обратной связи, который бы работал через AJAX. Главной целью была простота кастомизации под требования заказчика.
Раньше я использовал свои готовые наработки контактных форм, но их постоянное развертывание и настройка отнимало много времени.
Wedal Joomla Callback я делал в первую очередь для себя, для удобства работы. Но решил, что будет здорово поделиться модулем с сообществом.
Особенности Wedal Joomla Callback
В чем особенность данного модуля?
1. Только модуль и ничего кроме модуля
Форма обратной связи реализована с помощью одного модуля. Нет никаких дополнительных компонентов, плагинов и др.
2. Модуль работает полностью на AJAX
Он не загружается вместе со страницей. Загружается только кнопка вызова формы с таким кодом:
<div data-id="102"> <a href="#">Заказать</a> </div>
Никакого утяжеления страницы скрытыми формами. В коде вызова вообще не фигурирует ссылка на форму или код формы, что не позволит увидеть форму большинству роботов, рассылающих спам.
При клике по кнопке форма подгружается в реальном времени.
После отправки формы страница не перезагружается.
В Joomla это похоже на магию. Кто в теме, тот поймет =)
3. На странице может быть неограниченное количество разных форм с разным оформлением и только один JS и один CSS файл
Вы можете создать несколько копий модуля на одной странице с разными настройками. И да, они будут работать. При этом все формы будет обрабатывать общий JS-файл, который загрузится в единственном экземпляре.
Почему это круто? Теперь вы можете добавить пару контактных форм в шапке сайта, несколько в тексте, и еще одну в подвале с помощью одного единственного модуля, размноженного в админке. Это практически не утяжелит страницу (см. пункт выше). Это не потребует кучи скриптов.
4. Каждая форма, кнопка, письмо могут иметь уникальную структуру и оформление
Wedal Joomla Callback поддерживает альтернативные макеты для:
- Кнопки запроса
- Формы
- Письма с запросом
Да, всего один модуль и неограниченное количество разных форм.
5. Защита от спама и CSRF-атак
Специальной защиты от спама не предусмотрено, но форму смогут увидеть только те роботы, которые умеют выполнять JS-код и додумаются кликнуть по пустой ссылке. Если вы и получите спам, то мало и редко, в основном ручной человеческий. Зато ваши пользователи не будут утруждать себя разгадыванием кода с картинки, чтобы связаться с вами.
Кроме того, в модуле внедрена проверка токена, которая не позволит совершать CSRF-атаки.
6. Простота
Еще одной особенностью я бы назвал простоту модуля. Он не позволяет создавать неограниченный набор уникальных полей, зато в макетах вы сразу видите каждое отдельное поле, и способны быстро влиять на его обработчик. Это позволит легко дополнить модуль необходимым уникальным функционалом и подстроить под задачу.
7. Всплывающая или встраеваемая в страницу форма (v 1.1.1)
В обновленной версии модуля 1.1.1 добавлена возможность показывать не только всплывающую форму, но и встраивать форму в страницу сайта. На одной странице может быть несколько всплывающих форм и несколько встроенных. И всё это будет работать!
8. Блок «Политика обработки персональных данных» (v 1.1.2)
В версии 1.1.2 добавлена возможность включать в форму обратной связи сообщение или чекбокс, подтверждающие согласие пользователя с политикой обработки персональных данных. Материал для ссылки на политику также можно выбрать в настройках модуля:
9. Маска ввода номера телефона, которую можно задать самостоятельно в настройках (v 1.2.0)
В версии 1.2.0 добавлена опционально подключаемая маска для ввода номера телефона в соответствующем поле. В настройках модуля вы можете задать маску самостоятельно.
Если на странице выводится несколько модулей, маски в каждом из них могут отличаться.
Настройки Wedal Joomla Callback
Все настройки Wedal Joomla Callback вы можете видеть на рисунке:
Они очень простые и не требуют дополнительных пояснений. При желании, вы можете вообще ничего не настраивать, а только установить и опубликовать модуль. После этого он уже будет работать.
Как я писал выше, вы можете создать несколько копий модуля в админке и задать для них разные настройки, а вывести на одной странице. Это тоже будет работать.
Несколько модулей на одной странице:
И конечно, вы можете вставить один или несколько модулей обратной связи в любую статью, и это тоже будет работать!
Распространение модуля Wedal Joomla Callback
Модуль всплывающей формы обратной связи Wedal Joomla Callback распространяется по лицензии GPL. Это означает, что вы можете бесплатно скачивать и использовать его на любых сайтах.
В модуле нет скрытых ссылок и прочих «радостей» пиратского софта. Код модуля полностью открыт, и вы можете сами посмотреть его.
Скачать Wedal Joomla Callback
Wedal Joomla Callback имеет свой репозиторий на Github и поддерживает обновления прямо оттуда.
>>> Вы можете скачать модуль по этой ссылке.
Внимание! Для работы модуля требуется PHP версии 5.4 или выше. Проверить версию PHP, которая используется у вас, можно в админке Joomla (Система -> Информация о системе).
Надеюсь, что данный модуль окажется полезным для вас и ваших проектов.
За отдельную плату у меня вы можете заказать любые доработки, улучшения и изменения данного модуля, обратившись через форму обратной связи.
Полезные кейсы по модулю
Список изменений
v1.1.1
- Добавлена возможность использовать модуль как всплывающую или встроенную форму.
v1.1.2
- Добавлена возможность включать в форму обратной связи сообщение или чекбокс, подтверждающие согласие пользователя с политикой обработки персональных данных
v1.1.4
- Исправлена ошибка, связанная с привязкой модуля только к некоторым пунктам меню
Внимание! В версии 1.1.4 исправлена ошибка, связанная с привязкой модуля только к некоторым пунктам меню. В это версии были частично изменены макеты вывода форм. Если вы использовали модуль верси 1.1.3 или ниже с переопределенными в шаблон макетами, пожалуйста, актуализируйте их, сравнив с оригинальными (список изменений можно посмотреть здесь).
v1.2.0
- Добавлена опциональная маска ввода номера телефона
- В письме теперь показан URL страницы, с которой отправлена форма
- Исправлена проблема неверного адреса электронной почты, который подставлялся в поле отправителя при прямом ответе на письмо с сайта
- Исправлена проблема зависания формы при включенном отображении ошибок в настройках Joomla
Об авторе
Wedal (Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Модальное окно (всплывающее окно). Основы bootstrap 3 для начинающих. Урок №17
Модальное окно (всплывающее окно). Основы bootstrap 3 для начинающих. Урок №17
Всем привет!
В сегодняшнем уроке вы научитесь быстро создавать модальные окна. Их еще называют всплывающие окна. В эти окна я в основном добавляю формы обратной связи или регистрацию. Пользователь видит кнопку «Написать автору». При нажатии на эту кнопку, ему откроется всплывающее окно с формой. Красивый эффект с готовыми стилями и кодом. Вам только нужно будет вставить свой текст или форму.
Вот этот конструктор модального окна можете смело вставлять на свою страницу:
<!-- Кнопка, открывающая модальное окно --> <a href="#myModal" data-toggle="modal">Открыть модальное окно</a> <!-- HTML-код модального окна--> <div> <div> <div> <!-- Заголовок модального окна --> <div> <button type="button" data-dismiss="modal" aria-hidden="true">×</button> <h5>Заголовок модального окна</h5> </div> <!-- Основное содержимое модального окна --> <div> Содержимое модального окна... </div> <!-- Футер модального окна --> <div> <button type="button" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div>
Строка №15 – «Содержимое модального окна…», как вы уже догадались, здесь будет находиться текст, картинки и т.д.
Чтобы установить два и больше модальных окон, нужно, чтобы для каждой кнопки вызова всплывающего окна, прописать уникальное название (я добавил «2» к «#myModal», вот так «#myModal2»):
<a href="#myModal2" data-toggle="modal">Открыть модальное окно</a>
Если вы прописали в ссылке «#myModal2», то и модальному окну тоже нужно дать имя id с таким же именем (строка №2):
<!-- HTML-код модального окна--> <div> <div> … </div> </div>
Если не сделать этих требований, работать код не будет
Вот так выглядит код с двумя модальными окнами на одной страничке:
<!-- Кнопка, открывающая модальное окно №1 --> <a href="#myModal" data-toggle="modal">Открыть модальное окно</a> <!-- HTML-код модального окна №1--> <div> <div> <div> <!-- Заголовок модального окна --> <div> <button type="button" data-dismiss="modal" aria-hidden="true">×</button> <h5>Заголовок модального окна</h5> </div> <!-- Основное содержимое модального окна --> <div> Содержимое модального окна... </div> <!-- Футер модального окна --> <div> <button type="button" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div> <!-- ********************** --> <!-- Кнопка, открывающая модальное окно №2 --> <a href="#myModal2" data-toggle="modal">Открыть модальное окно</a> <!-- HTML-код модального окна №2--> <div> <div> <div> <!-- Заголовок модального окна --> <div> <button type="button" data-dismiss="modal" aria-hidden="true">×</button> <h5>Заголовок модального окна №2</h5> </div> <!-- Основное содержимое модального окна --> <div> Содержимое модального окна...№2 </div> <!-- Футер модального окна --> <div> <button type="button" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div>
Результат:
Открыть модальное окно №1
Содержимое модального окна…
Открыть модальное окно №2
Содержимое модального окна…№2
Предыдущая запись
Уведомления для веб-страниц. Основы bootstrap 3 для начинающих. Урок №16
Следующая запись
Как создать слайдер (карусель). Основы bootstrap 3 для начинающих. Урок №18
Yii & CJuiDialog для модальных окон :: Coding Cheat Sheets
$this--->beginWidget('zii.widgets.jui.CJuiDialog', array( 'id' => 'mydialog', 'options' => array( 'title' => 'Отправить сообщение', 'autoOpen' => false, 'modal' => true, 'resizable'=> false ), )); $qForm = new QuickForm; $form = $this->beginWidget('CActiveForm', array( 'id' => 'quick-form', 'enableClientValidation' => true, 'clientOptions' => array( 'validateOnSubmit' => true, ), 'action' => array('site/quick'), )); ?> <!--?php echo $form--->errorSummary($qForm); ?> <!--?php echo $form--->labelEx($qForm,'name'); ?> <!--?php echo $form--->textField($qForm,'name', array('size'=>35)); ?> <!--?php echo $form--->error($qForm,'name'); ?> <!--?php echo $form--->labelEx($qForm,'phone'); ?> <!--?php echo $form--->textField($qForm,'phone', array('size'=>35)); ?> <!--?php echo $form--->error($qForm,'phone'); ?> <!--?php echo $form--->labelEx($qForm,'timeToCall'); ?> <!--?php echo $form--->textField($qForm,'timeToCall', array('size'=>35)); ?> <!--?php echo $form--->error($qForm,'timeToCall'); ?> <!--?php echo CHtml::submitButton('Отправить'); ?--> <!--?php $this--->endWidget(); $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>`
Битрикс — Лендинг Парфюмерии и Косметики – Дайджест обновлений
С момента выхода решения «Лендинг Косметики и Парфюмерии» вышло 4 минорных обновления:
В сумме на данный момент закрыто 13 issue в трекере BitBucket, пришедшихся в основном на два последних релиза (первые 2 содержали во многом косметические правки).
Мы постарались прислушаться к тем рекомендациям, которые вы дали в обсуждении поста о создании решения.
Так же мы реализовали поддержку одного из самых могучих модулей 1С-Битрикс, давая преимущество пользователям редакций начиная со «Стандарт» и выше — Веб-форм!
[spoiler]
В настоящий момент решение снабжено 3 шаблонами, поддерживающими AJAX и Композитный режим, реализованными в лучших традициях 3 Bootstrap:
- форма обратной связи с уведомлениями в модальных окнах
- форма обратной связи в немодальном режиме
- кнопка быстрого заказа через веб-форму в модальном окне
Как видно все 3 обладают слегка различными сценариями применения.
В частности шаблон 1 выводит форму на странице, а только уведомления об успешной отправке или ошибке выводит в модальном окне. С 3 шаблоном такой вариант неприемлем, кнопка может вести только на другую страницу (ну и зачем тогда компонент городить? Лучше сделайте отдельную страницу, мы вам мешать не будем), либо вывести в модальном окне всю форму целиком.
Пресс-релизы с описаниями появившихся фич веб-форм:
Поскольку последний релиз помимо новой веб-формы получил так же обновление шрифтов и закрытие пары неприятных багов, версия выше… Увы, не получилось придерживаться темпа и выпускать мелкими релизами.
Так же важным является то, что для версии 1.1.0 мы пересобрали дистрибутив, облегчили его, выкинули кое-какой исторический мусор (он стал примерно на 10% легче), поэтому новые клиенты будут получать только свежую, лёгенькую и чистенькую версию решения!
Напоминаем, что одна из важнейших фишек двух последних обновлений — работа с модулем веб-форм на редакциях БУС начиная со «Стандарта», что позволяет вам интегрировать результаты веб-форм с CRM Битрикс24 и не только отдавать туда информацию об обращениях с лендинга, но и организовать небольшой интернет-магазин на средних редакциях.
Bootstrap 4 Modal Form — примеры и руководство. Базовое и расширенное использование
Компиляция и настройка
Чтобы еще больше снизить вес пакета MDBootstrap, вы можете скомпилировать свой собственный пакет, содержащий только
эти компоненты и
функции, которые вам нужны.
Если вам нужна дополнительная помощь в компиляции вашего пользовательского пакета, воспользуйтесь нашим руководством по компиляции и настройке.
Руководство по компиляции и настройке
Карта зависимостей файлов SCSS в MDBootstrap:
Легенда:
'->' означает 'требуется'
Все бесплатные и профессиональные файлы требуют файлов из каталога 'core'
'none' означает 'этот компонент не требует ничего, кроме файлов ядра'
Файл, завернутый в ``, означает, что этот файл делает базовый компонент красивее, но это не обязательно для правильной работы.
Все компоненты PRO требуют 'pro / _variables.scss 'файл
scss /
|
| - ядро /
| |
| | - бутстрап /
| | | - _functions.scss
| | | - _variables.scss
| |
| | - _colors.scss
| | - _global.scss
| | - _helpers.scss
| | - _masks.scss
| | - _mixins.scss
| | - _typography.scss
| | - _variables.scss
| | - _waves.scss
|
| - бесплатно /
| | - _animations-basic.scss -> нет
| | - _animations-extended.scss -> _animations-basic.scss
| | - _buttons.scss -> нет
| | - _cards.scss -> нет
| | - _dropdowns.scss -> нет
| | - _input-group.scss -> _forms.scss, _buttons.scss, _dropdowns.scss
| | - _navbars.scss -> нет
| | - _pagination.scss -> нет
| | - _badges.scss -> нет
| | - _modals.scss -> _buttons.scss, _forms.scss (PRO -> _tabs.scss)
| | - _carousels.scss ->
| | - _forms.scss -> нет
| | - _msc.scss -> нет
| | - _footers.scss нет (PRO :)
| | - _list-group.scss -> нет
| | - _tables.scss -> нет (PRO: _material-select.scss, pro / _forms.scss, _checkbox.scss, pro / _buttons.scss, pro / _cards.scss, _pagination.scss, pro / _msc.scss )
| | - _depreciated.scss
|
| - pro /
| |
| | - сборщик /
| | | - _default.scss -> нет
| | | - _default-time.scss -> _default.scss, free / _forms.scss, free / _buttons.scss, pro / _buttons.scss, free / _cards.scss
| | | - _default-date.scss -> _default.scss, бесплатно / _forms.scss
| |
| | - разделы /
| | | - _templates.scss -> _sidenav.scss
| | | - _social.scss -> бесплатно / _cards.scss, бесплатно / _forms.scss, бесплатно / _buttons.scss, pro / _buttons.scss,
| | | - _team.scss -> бесплатно / _buttons.scss, pro / _buttons.scss, free / _cards.scss, pro / _cards.scss
| | | - _testimonials.scss -> бесплатно / _carousels.scss, pro / _carousels.scss, бесплатно / _buttons.scss, pro / _buttons.scss
| | | - _magazine.scss -> _badges.scss
| | | - _pricing.scss -> бесплатно / _buttons.scss, pro / _buttons.scss
| | | - _contacts.scss -> бесплатно / _forms.scss, pro / _forms.scss, бесплатно / _buttons.scss, pro / _buttons.scss
| |
| | - _variables.scss
| | - _buttons.scss -> бесплатно / _buttons.scss, pro / _msc.scss, _checkbox.scss, _radio.scss
| | - _social-buttons.scss -> бесплатно / _buttons.scss, pro / _buttons.scss
| | - _tabs.scss -> _cards.scss
| | - _cards.scss -> бесплатно / _cards.scss
| | - _dropdowns.scss -> бесплатно / _dropdowns.scss, бесплатно / _buttons.scss
| | - _navbars.scss -> бесплатно / _navbars.scss (PRO :)
| | - _scrollspy.scss -> нет
| | - _lightbox.scss -> нет
| | - _chips.scss -> нет
| | - _msc.scss -> нет
| | - _forms.scss -> нет
| | - _radio.scss -> нет
| | - _checkbox.scss -> нет
| | - _material-select.scss -> нет
| | - _switch.scss -> нет
| | - _file-input.scss -> бесплатно / _forms.scss, бесплатно / _buttons.scss
| | - _range.scss -> нет
| | - _input-group.scss -> free / _input-group.scss и то же, что и свободная группа ввода, _checkbox.scss, _radio.scss
| | - _autocomplete.scss -> бесплатно / _forms.scss
| | - _accordion.scss -> pro / _animations.scss, бесплатно / _cards.scss
| | - _parallax.scss -> нет
| | - _sidenav.scss -> бесплатно / _forms.scss, pro / _animations.scss, разделы / _templates.scss
| | - _ecommerce.scss -> бесплатно / _cards.scss, pro / _cards.scss, бесплатно / _buttons.scss, pro / _buttons.scss, pro / _msc.scss
| | - _carousels.scss -> бесплатно / _carousels.scss, бесплатно / _cards.scss, бесплатно / _buttons.scss
| | - _steppers.scss -> бесплатно / _buttons.scss
| | - _blog.scss -> нет
| | - _toasts.scss -> бесплатно / _buttons.scss
| | - _animations.scss -> нет
| | - _charts.scss -> нет
| | - _progress.scss -> нет
| | - _scrollbar.scss -> нет
| | - _skins.scss -> нет
| | - _устарело.scss
|
`- _custom-skin.scss
`- _custom-styles.scss
`- _custom-variables.scss
`- mdb.scss
Карта зависимостей модулей JavaScript в MDBootstrap:
Легенда:
'->' означает 'требуется'
Все файлы требуют jQuery и bootstrap.js
js /
├── dist /
│ ├── buttons.js
│ ├── cards.js
│ ├── character-counter.js
│ ├── chip.js
│ ├── collapsible.js -> vendor / velocity.js
│ ├── раскрывающийся список.js -> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js -> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js -> vendor / velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js -> vendor / velocity.js, vendor / hammer.js, vendor / jquery.hammer.js
│ └── smooth-scroll.js
├── _intro-mdb-pro.js
├── modules.js
├── src /
│ ├── buttons.js
│ ├── карты.js
│ ├── character-counter.js
│ ├── chip.js
│ ├── collapsible.js -> vendor / velocity.js
│ ├── dropdown.js -> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js -> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js -> vendor / velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js -> vendor / velocity.js, vendor / hammer.js, vendor / jquery.hammer.js
│ └── smooth-scroll.js
└── продавец /
├── аддоны /
│ ├── datatables.js
│ └── datatables.min.js
├── chart.js
├── extended-modals.js
├── hammer.js
├── jarallax.js
├── jarallax-video.js -> vendor / jarallax.js
├── jquery.easing.js
├── jquery.easypiechart.js
├── jquery.hammer.js -> vendor / hammer.js
├── jquery.sticky.js
├── lightbox.js
├── picker-date.js -> vendor / picker.js
├── picker.js
├── picker-time.js -> vendor / picker.js
├── scrollbar.js
├── scrolling-navbar.js
├── toastr.js
├── velocity.js
├── waves.js
└── wow.js
Пример модальной формы Twitter Bootstrap
В одном из наших предыдущих руководств twitter bootstrap обсуждалось создание рабочей контактной формы в Bootstrap и PHP. Теперь давайте посмотрим на пример создания модальной контактной формы в начальной загрузке. Эти типы всплывающих модальных форм будут очень полезны, если вы не хотите иметь отдельные страницы для таких форм, как логин, регистрация пользователя или контактная форма. По умолчанию модальные диалоговые окна скрыты и отображаются только тогда, когда они запускаются дескриптором, таким как ссылка привязки или кнопки. Однако эти модальные диалоговые окна не ограничиваются формами, но также могут содержать простой текст или другое HTML-содержимое, такое как слайдеры изображений, предупреждения, видео и т. Д.
Пример модальной формы Twitter Bootstrap
Twitter Bootstrap предоставляет множество полезных подключаемых модулей, и «модальный» подключаемый модуль — один из них, который можно использовать для создания адаптивных модальных диалогов в кратчайшие сроки.Обычно модальное окно начальной загрузки состоит из трех разделов:
- Модальный заголовок — содержащий заголовок и кнопку выхода.
- Модальное тело — содержит содержимое, отображаемое в модальном поле.
- Модальный нижний колонтитул — который содержит текст уведомления или кнопки действий, такие как отправить, закрыть и т. Д.
Не пропустите: Как добавить панель социальных сетей в меню навигации Bootstrap
Модальное диалоговое окно начальной загрузки имеет следующую структуру:
Создание модальной контактной формы в Bootstrap
Теперь давайте посмотрим, как разместить контактную форму в модальном поле.Создание модальной формы не имеет никакого значения, поскольку мы должны написать разметку для формы как обычно и поместить ее в раздел модального тела.
Но, как было сказано ранее, все модальные окна должны запускаться с помощью некоторого дескриптора, и мы должны сначала создать дескриптор. Итак, мы пишем разметку для меню начальной загрузки со ссылкой меню «контакт», которая при срабатывании должна вызывать модальную всплывающую форму.
Как видите, мы использовали два атрибута данных для пункта меню «контакт».Атрибут данных data-toggle = "modal"
активирует модальное окно без использования java-скрипта, а data-target = "# myModal"
будет указывать, какой модальный элемент должен запускаться. В этом случае модальным элементом будет элемент с идентификатором myModal.
Примечание: Модальное перекрытие не поддерживается, поэтому убедитесь, что отображается только одно окно за раз. Открытие нескольких модальных диалоговых окон одновременно требует некоторого пользовательского кода.
Затем мы пишем разметку для актуальной модальной формы.Вы можете разместить этот код в любом месте внутри основного раздела, но было бы целесообразно разместить его над закрывающим элементом основного тела (