Всплывающее окно с формой обратной связи

Сайтостроение WordSmall

Этот урок можно назвать продолжением предыдущего мини-обзора где мы создавали круглые кнопки, одна из которых – заказ звонка, а вторая – обратная связь. Они являются лишь началом работы полной функции. Для завершения не хватает еще одной части, а именно модального окна.

По идее, оно должно появляться при нажатии на кнопку, чтобы создался эффект всплывающего окна с формой обратной связи. Форму будем создавать с помощью всем известного плагина «Contact Forms 7». Добавим свои стили к форме, оформим красиво. В общем, сделаем как надо.

Всплывающее окно с формой обратной связи

Демо Скачать

В работе над модальным окном я воспользуюсь свободным плагином «Modal Window Effects» (демо). Вы же можете использовать любой другой (даже специальный) плагин окна для WordPress. Надо лишь привязать вызов к нашей кнопке, и все будет в ажуре. Поехали!

Кнопка со сплывающим окном обратной связи

Первым делом займемся установкой на сайт кнопки с окном, и уже потом перейдем к форме связи. Сложного в этом ничего нет. Из архива, скаченного выше по ссылке, нужно подключить три файла: два файла из папки «modal — JS» и один из папки «modal — CSS». Все они относятся к модальному окну, это для ясности.

Открываем файл functions.php и в конце перед знаком ?> (или там, где вам удобнее) подключаем файлы таким образом:

function my_scripts_method() {
        // модельное окно
        wp_enqueue_script( 'mod-scripts', get_template_directory_uri() . '/modal/js/classie.js', array(), null, true);
        wp_enqueue_script( 'modef-scripts', get_template_directory_uri() . '/modal/js/modalEffects.js', array(), null, true);
        
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
/* стили модального окна */
function wpdocs_theme_name_scripts() {
    wp_enqueue_style( 'style-mod', get_template_directory_uri() . '/modal/css/component.css');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' );

Теперь открываем файл style.css и добавляем еще такой код (это стили кнопки):

/*кнопка обратной связи*/

.email-bt {
        background:#F95C18;
        border:2px solid #F95C18;
        border-radius:50%;
        box-shadow:0 8px 10px rgba(249,92,24,0.3);
        cursor:pointer;
        height:68px;
        text-align:center;
        width:68px;
        position: fixed;
        left: 8%;
        bottom: 18%;
        z-index:999;
        transition:.3s;
        -webkit-animation:email-an linear 1s infinite;
        animation:email-an linear 1s infinite;
}

.email-bt .text-call{
        height:68px;
        width:68px;        
        border-radius:50%;
        position:relative;
        overflow:hidden;
}

.email-bt .text-call span {
    text-align: center;
    color:#F95C18;
    opacity: 0;
    font-size: 0;
        position:absolute;
        right: 4px;
        top: 22px;
    line-height: 14px;
        font-weight: 600;
    text-transform: uppercase;
    transition: opacity .3s linear;
    font-family: 'montserrat', Arial, Helvetica, sans-serif;
}

.email-bt .text-call:hover span {
    opacity: 1;
        font-size: 11px;
}
.email-bt:hover i {
    display:none;
}

.email-bt:hover {
        z-index:1;
        background:#fff;
        transition:.3s;
}
.email-bt:hover i {
        color:#38a3fd;
        font-size:40px;
        transition:.3s;
}
.email-bt i {
        color:#fff;
        font-size:29px;
        transition:.3s;
        line-height: 66px;
}

.email-bt i  {
        -webkit-animation: opsimple 3s infinite;
        animation: opsimple 3s infinite;
}

@-webkit-keyframes email-an {
        0% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 0 rgba(249,92,24,0.2),0 0 0 0 rgba(249,92,24,0.2)
}
40% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 15px rgba(249,92,24,0.2),0 0 0 0 rgba(249,92,24,0.2)
}
80% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 30px rgba(249,92,24,0),0 0 0 26.7px rgba(249,92,24,0.067)
}
100% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 30px rgba(249,92,24,0),0 0 0 40px rgba(249,92,24,0.0)
}
}@keyframes email-an {
        0% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 0 rgba(249,92,24,0.2),0 0 0 0 rgba(249,92,24,0.2)
}
40% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 15px rgba(249,92,24,0.2),0 0 0 0 rgba(249,92,24,0.2)
}
80% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 30px rgba(249,92,24,0),0 0 0 26.7px rgba(249,92,24,0.067)
}
100% {
        box-shadow:0 8px 10px rgba(249,92,24,0.3),0 0 0 30px rgba(249,92,24,0),0 0 0 40px rgba(249,92,24,0.0)
}
}

@keyframes opsimple {
0% {
    opacity: 0;
}
40% {
    opacity: 1;
}

80% {
    opacity: 1;
}
100% {
    opacity: 0;
}
}

@-webkit-keyframes opsimple {
0% {
    opacity: 0;
}
40% {
    opacity: 1;
}
80% {
    opacity: 1;
}
100% {
    opacity: 0;
}
}

Осталось вывести разметку.

Открываем файл footer.php и перед функцией <?php wp_footer(); ?> вставляем HTML-разметку. На этом этапе у вас должна получиться плавающая кнопка на странице, по нажатию которой появляется всплывающее окно (пока что пустое).

<div type="button" data-modal="modal-9" class="email-bt md-trigger">
    <div class="text-call">
                <i class="fa fa-envelope" aria-hidden="true"></i>
                <span>Обратная<br>связь</span>
        </div>
</div>
<div class="md-modal md-effect-9" id="modal-9">
        <div class="md-content">
                <h3>Обратная связь</h3>
                        <div>
                 <!-- сюда вставить функцию вызова формы связи (шорткод) -->
                        </div>
        </div>
</div>
<div class="md-overlay"></div>

Форма связи

Ну вот, дошли до последней части «урока».

Думаю, плагином «Contact Forms 7» все умеют пользоваться. После того, как в нем создадите новую форму, вместо стандартного кода, что образовывается по умолчанию, добавьте этот:

<label>[text* your-name placeholder "Как к Вам обращаться *"]</label>
<label>[email* your-email placeholder "Ваш e-mail *"]</label>
<label>[textarea your-message placeholder "Сообщение..."]</label>
[submit "Отправить"]

Теперь выводим форму в разметке выше в указанном там месте:

<?php echo do_shortcode( '[contact-form-7 id="2400" title="proba"]' ); ?>

Стили оформления, по идее, должны подхватиться из вашей текущей WordPress темы, но можно прописать свои. В файл style.css прописываем такой код:

/*форма связи в модальном окне */

#wpcf7-f2400-o1 form {
    margin-left:auto;
    margin-right:auto;
}

#wpcf7-f2400-o1 input, #wpcf7-f2400-o1 textarea {
         box-sizing: border-box;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        -o-box-sizing: border-box;
}

#wpcf7-f2400-o1 textarea{
        background: rgba(0, 0, 0, 0.1);
    width: 100%;
    height: 110px;
    border: 1px solid rgba(255,255,255,.6);
    border-radius: 2px;
    display:block;
    font-family: 'Source Sans Pro', sans-serif;
    font-size:15px;
    color:#444;
    padding:20px;
    margin-bottom:20px;
}

#wpcf7-f2400-o1 input {
        background: rgba(0, 0, 0, 0.1);
    width: 100%;
    height: 48px;
    border: none;
    border-radius: 4px;
    display:block;
    font-family: 'Source Sans Pro', sans-serif;
    font-size:15px;
    color:#444;
    padding-left:20px;
    padding-right:20px;
    margin-bottom:20px;
}

#wpcf7-f2400-o1 input[type=submit] {
    cursor:pointer;
}

::-webkit-input-placeholder {
          color: #999;
}

:-moz-placeholder{
    color: #999;
}

::-moz-placeholder {
    color: #999;
}

:-ms-input-placeholder {
          color: #999;
}

#wpcf7-f2400-o1 input:focus, #wpcf7-f2400-o1 textarea:focus {
          background-color: rgba(0, 0, 0, 0.15);
}

#wpcf7-f2400-o1 .wpcf7-submit {
        margin:0 auto;
    background: #F95C18;
    padding: 10.5px 21px;
    border-radius: 4px;
    color: #fff;
        font-size:18px;
        transition:all 0.3s;
}
#wpcf7-f2400-o1 .wpcf7-submit:hover {
    background: #E34602;
 }

Обратите внимание на идентификатор перед тегами формы в стилях. У вас, естественно, он будет другой. Следовательно, его нужно поменять на свой, чтобы стили заработали. Узнать его можно в исходном коде.

Автор, он же Андрей, он же Admin, он же WordSmall

Лентяй-любитель, окончил высшую школу безделья с многочисленными знаками отличия. Создатель этого небольшого «чудо-блога» о еще более «чудном» контенте.

E-mail Google+ Twitter
Комментариев: 31
  • Александр

    Все сделал как указанно, но почему то кнопка не отображается, она появляется в самом низу сайта, такое ощущение что стили не могут подгрузиться, но если нажимаю на текст Обратная связь появляется пустое модальное окно. В чем может быть проблема. 3 файла на сайт загрузил в папку wp-includes, 1 в css и 2 в js

    • WordSmall

      А зачем в папку wp-includes? это системная папка, в нее не нужно ничего загружать. Проверти все пути к файлам.

  • Александр

    А в какую тогда? В папку с темой или в корневую папку сайта?

    • WordSmall

      Все в папку с темой.

      • Александр

        WordSmall, Спасибо. Заработало. Вот только нет значка конвертика на круглой кнопки и при нажатии не подгружаются стили модального окна.

      • WordSmall

        Конвертик (иконка) это шрифт Awesome wordsmall.ru/grafika-i-di... -primenenie.html А стили нужно просматривать в исходном коде, что им мешает или с чем конфликтуют.

  • Дмитрий

    Добрый день, дайте ответ, пожалуйста, на два моих вопроса :

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

    2. Как узнать свой идентификатор ? Где он находится?

    Спасибо)

    • WordSmall

      Добрый день.

      1. Просто убрать звездочку email*.

      2. Откройте исходный код и найдите строку похожую на эту

      <div role="form" class="wpcf7" id="wpcf7-f1199-p9-o1" dir="ltr" lang="ru-RU">

      Вот это и есть идентификатор id="wpcf7-f1199-p9-o1"

  • Andrey

    У меня почему то любой шорт код вставляется и уходит просто в футер, а ни как всплывающее окно. В чем может быть дело?

    • WordSmall

      В смысле, уходит в футер?

      • Andrey

        WordSmall, пробовал и контакт форм 7 и WPforms, они просто в футуре располагаются и все,а кнопка в принципе не кликабельна. Рабочая форма со всеми полями размещается в футуре, вместо открывающегося модального окна.

  • WordSmall

    Значит вы не правильно подключили мод.окно. Проверьте подключение, да и стили тоже.

  • Андрей

    Все отображаеся, но в каком файле, в каком месте и как прописать свою почту?

    • WordSmall

      Свою почту? Туда куда будут приходить письма? Она указана в вашем профиле на сайте

  • PapaV

    Здравствуйте!

    Что не так?

    • WordSmall

      День добрый. Ширина? Так просто укажите какая вам нужно. Смотрите через стили через инструмент браузера

      • PapaV

        WordSmall, с шириной все понятно. это не модал, это в подвале отображается. Постоянно...

      • WordSmall

        Значит не подключено модальное окно. Проверяйте пути подключения, подключение библиотеки jQuery

  • Марина

    Здравствуйте!

    Скажите пожалуйста как можно сделать несколько таких кнопок в нужных местах? Например на главной странице есть блок тарифы и там вставить в этот блок такую кнопку Заказать звонок с всплывающей формой обратной связи или Обратного звонка.

    Ну т е в любом месте а не именно только шорткодом

    Я уже писала комментарий, но вы почему-то удалили его. Ссылка на сайт где кнопка

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

    Пожалуйста ответьте!

    Спасибо

    Марина Александровна.

    • WordSmall

      Добрый день. Все что попадает в папку «спам» или находится в подвешенном состоянии — удаляется. И ссылка на ваш сайт мне не нужна.

      Для того, чтобы сделать несколько подобных кнопок, просто меняйте класс. Вот пример wordsmall.ru/html-i-css/k...s-animaciej.html. Как вставить в любом месте? Просто вставляйте в любое место. Это же обычный HTML код. И по необходимости меняйте стили: цвет, размеры, анимацию.

  • Марина

    Уважаемый WordSmall!

    Я подумала, что чтобы увидеть результат нужна ссылка на сайт.

    А вот именно чтобы вставить без шорткода не получается. Два дня сижу с этим вопросом.

    Про HTML знаю и вставляю в статью, но со шорткодом вордпресс режет код ( закоментирует его в такм виде )

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

    Если возможно, то пожалуйста может простой пример вставки HTML дадите???

    Ну никак не выходит

    Со шорткодом просто здорово, но остальное ...

    Спасибо!

    • WordSmall

      Марина, а вы все правильно делаете? Модальное окно — это jQuery плагин (можете любой другой подключить). Вы его подключили? К круглой кнопке привязывается модальное окно, чтобы по нажатию вызывать его. А форма связи, которая находится в модальном окне — это плагин Contact Forms 7. Пример обычного HTML можете скачать в статье (кнопка выше под картинкой).

      Шорткод выводит форму, которую вы создаете с помощью плагина Contact Forms 7. Здесь id="2400" указываете свой идентификатор. Его можно узнать в админке напротив ваших форм.

  • Марина

    Вы знаете)))) я пытаюсь вставить не шорткод а саму форму в HTML, так как в статью шорткод мне не вставить, т е код PHP не вставляется в модальное окно ( вордпресс режет код php )

    во проблема)))

    Сейчас через код страницы вынула код формы, вставила в модальное окно и никак

Добавить комментарий
bold quote code