Как создать плавающую форму обратной связи с защитой от спама

Здравствуйте, уважаемые читатели, гости и друзья. В сегодняшней статье я расскажу, как создать плавающую форму обратной связи. Но, это будет необычная форма, — маленький конвертик, который притягивает взгляды посетителей и даёт возможность отправить сообщение с сайта.

А вообще, используя эту идею, вы можете вместо формы обратной связи использовать, скажем, форму заказа или обратный звонок. Всё будет зависеть от цели, которую вы преследуете.

Сразу должен предупредить вас, урок я максимально упростил, так что сможет справиться даже новичок в сайтостроении. Нужно будет лишь выполнить несколько определённых шагов. А если вы захотите разобраться во всех тонкостях и сделать изменения под себя, то знания CSS и HTML будет как нельзя кстати.

В чём принцип работы формы

Суть формы заключается в том, что на сайте будет в фиксированном месте виден лишь маленький конвертик. В нашем случае, он будет располагаться справой стороны. Наличие таких элементов всегда притягивает взгляды посетителей. И тут преследуется две цели:

  1. Предоставить возможность посетителям связаться с автором сайта.
  2. Улучшить поведенческие факторы.

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

И всё это лишь благодаря одному маленькому конвертику на сайте.

Вся хитрость в этом конвертике
Вся хитрость в этом конвертике

Подготовительный этап

Перед внедрением формы на сайт, потребуется сделать некоторые приготовления. Для начала нужно будет скопировать на хостинг файл с изображением конвертика и файл обработчик отправки писем. Все необходимые файлы вы можете скачать с моего Яндекс.Диска по этой ссылке.

Файл mail.png вы должны скопировать в папку к остальным изображениям (/wp-content/uploads/год/месяц). Ну, или в любое другое место, конечно, на ваше усмотрение. Я же предпочитаю, чтобы все изображения были в одном месте.

Файл message.php нужно скопировать в папку темы вашего блога (/wp-content/themes/BusinessWeb/message.php). После того как файл будет скопирован, внесите необходимые изменения:

  1. Указать страницу, на которую будет перенаправлен посетитель после отправки сообщения.
  2. Указать почтовый ящик для получения писем.
<meta http-equiv='refresh' content='0; url=АДРЕС ПЕРЕНАПРАВЛЕНИЯ ПОСЕТИТЕЛЯ ПОСЛЕ ОТПРАВКИ СООБЩЕНИЯ'> <!-- Редирект -->
<meta charset="UTF-8" />

<?php
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == 'Введите Ваше имя') {unset($name);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == 'Введите Ваш e-mail') {unset($email);}}
if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == 'Тема сообщения') {unset($sub);}}
if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == 'Введите текст сообщения') {unset($body);}}
if (isset($_POST['spam'])) {$spam = $_POST['spam'];}
if (empty($spam)) /* Проверка скрытого поля */
{ 
if (isset($name) && isset($email) && isset($sub) && isset($body)){
 
$address = "АДРЕС ПОЧТОВОГО ЯЩИКА ДЛЯ ПРИЁМА ПИСЕМ"; /* Адрес получателя */
$subject = "Сообщение с сайта";
$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
$send = mail ($address,$subject,$mes,"Content-type: text/plain; charset = UTF-8\r\nFrom: $email");
if ($send == 'true')
{$ms = 'Спасибо за сообщение, в ближайшее время я вам отвечу!';}
else {$ms = 'Ошибка, сообщение не отправлено!';}
 }
else
{
$ms = 'Сообщение не отправлено, вы заполнили не все поля!';
}
echo "<script type=\"text/javascript\">alert( \"$ms\");</script> \n";

exit ; /* Выход после отправки письма */
}
exit; /* Выход без отправки письма, если поле spam не пустое */
?>

На этом подготовительный этап завершён.

Создание стилей оформления для формы обратной связи

На самом деле вы ничего создавать не будете. Достаточно будет взять приведённые ниже стили и вставить их в таблицу стилей (style.css).

Итак, открываем административную панель WordPress – «Внешний вид»«Редактор»«Таблица стилей»

Вставка CSS стилей
Вставка CSS стилей

В файл style.css вставляете вот эти стили:

/* Основные свойства */
.mail ul, .mail li, .mail h3 {
 padding: 0; 
 margin: 0; 
 background: none;
 list-style: none!important;
 color:#B5B5B5;
}
.mail {
 font-size: 12px;
}
.mail * {
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 box-sizing: border-box;
 border-radius: 5px 0px 0 5px;
}
.mail a {
 text-decoration:none;
}
.mail-content {
 position: relative;
}
.mail .contact-tabs li a {
 padding: 5px;
 margin: 0;
 color: #999;
 display: block;
}
.mail .contact-tabs li img {
 padding: 0;
 margin: 0;
 display: block;
 width: 24px;
 height: 24px;
}
.mail-slider h3 {
 padding: 15px;
 font-size: 18px;
 line-height: 18px;
}
/* Смещение иконки */
.right .contact-tabs {
 padding-top: 8px;
}
/* Стиль формы */
.mail .contact-tabs li.dark, .mail-slider .tab-content.dark .tab-inner {
 color: #B5B5B5;
 border: none;
}
.mail .contact-tabs li.dark {
 background: #292929;
}
.mail .contact-tabs li.dark.active, .mail-slider .tab-content.dark .tab-inner, .mail .contact-tabs li.dark:hover {
 background: #212121;
}
#kontact_mail{
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
-webkit-transition: all 1s ease-in-out;}
#kontact_mail:hover{
-webkit-transform: translate(-280px,0px);
-moz-transform: translate(-280px,0px);
-o-transform: translate(-280px,0px);
}
.kontact_form{
border-top: 1px solid #333;
padding: 15px;
}
.kontact_input,.kontact_text{
background-color: #393939;
border: 1px solid #333;
color: #B5B5B5;font: normal 12px/12px Arial, sans-serif!important;
display: inline;
width: 100%;
padding: 5px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
margin-bottom: 5px;
}
.submit_kontact{
text-shadow: 0 1px 0 #fff;
color: #555;
padding: 5px 12px;
border: 1px solid;
font-weight: bold;
font-size: 11px;
white-space: nowrap;
word-wrap: normal;
cursor: pointer;
border-radius: 3px;
opacity: 0.8;
}
.submit_kontact:hover{
text-shadow: 0 1px 0 #fff;
color: #555;
padding: 5px 12px;
border: 1px solid;
font-weight: bold;
font-size: 11px;
white-space: nowrap;
word-wrap: normal;
cursor: pointer;
border-radius: 3px;
opacity: 1;
}

Если после проверки работы формы, будут некоторые недочёты в дизайне, то вы уже сможете подправить дизайн в зависимости от ваших потребностей. К примеру в видеоуроке вы увидите, как исправить небольшой недочёт с полем для ввода сообщения (textatea). Такие нюансы возникают в следствии наследования css стилей. Но, все они легко исправимы.

Вставка в исходный код HTML каркаса формы обратной связи

Для того чтобы наш маленький конвертик появился на сайте нужно вставить HTML каркас в исходный код сайта. Если вы хотите чтобы форма отображалась на каждой странице, то следует вставить код формы в файл index.php. Если вы хотите чтобы конвертик появлялся на страницах со статьями, то код нужно будет вставить в файл single.php. Думаю, идею вы поняли.

Итак, разберём пример вставки кода на примере файла index.php. Открываем административную панель WordPress – «Внешний вид»«Редактор»«index.php». Код формы нужно будет вставить таким образом, чтобы не нарушить работу всего шаблона. Поэтому будьте внимательны, и посмотрите в видеоуроке, как я это делаю.

В общем, вам нужно будет вставить вот это код HTML каркаса формы обратной связи:

<div id="kontact_mail" class="mail right align-top sliding" style="width: 280px; position: fixed; margin-right: -280px; top: 80px; right: 0px; z-index: 1000;">
<div id="contact-tabs" class="mail-content">
<ul class="contact-tabs" style="position: absolute; top: 0px; left: 0px; margin-left: -33px; width: 33px;">
<li class="mail-form first dark">
<a href="#" rel="0" title="Написать сообщение">
<img src="ССЫЛКА К ФАЙЛУ mail.png" alt="">
</a>
</li>
</ul>
<ul class="mail-slider">
<li class="tab-content tab-0 dark" style="height: 390px; width: 280px; position: relative; display: list-item;">
<div class="tab-inner" style="height: 390px;">
<h3>Написать автору</h3>
<form action="ССЫЛКА К ФАЙЛУ message.php" method="post" name="obratka" class="kontact_form">
<input class="kontact_input" name="name" type="text" onfocus="if (this.value == 'Введите Ваше имя') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Введите Ваше имя';}" value="Введите Ваше имя" /> 
<input class="kontact_input" name="email" type="text" onfocus="if (this.value == 'Введите Ваш e-mail') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Введите Ваш e-mail';}" value="Введите Ваш e-mail" />
<input class="kontact_input" name="sub" type="text" onfocus="if (this.value == 'Тема сообщения') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Тема сообщения';}" value="Тема сообщения" />
<textarea class="kontact_text" name="body" rows="10" onfocus="if (this.value == 'Введите текст сообщения') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Введите текст сообщения';}" value="Введите текст сообщения" ></textarea>
<input name="spam" type="text" style="display:none" value="" />
<input class="submit_kontact" type="submit" value="Отправить сообщение" />
</form>
<div class="mail-response">
</div>
</div>
</li>
</ul>
</div>
</div>

Обязательно смените ссылки на изображение конвертика (файл mail.png) и на файл обработчик (message.php). Эти фрагменты, я обозначил оранжевым цветом.

Вот теперь, если вы сделали всё правильно, можно проверять результат вашей работы.

Плавающая форма готова
Плавающая форма готова

Ошибки, которые могут, возникнут, сводятся лишь к правильному указанию ссылок к файлам. Будьте внимательны и у вас всё получится. Ну а если вы захотите немного подправить стили формы, то для этого достаточно будет подправить CSS стили. Вот и всё, на этом сегодня урок закончен. Обязательно посмотрите видеоурок, в нём все ваши действия показаны наглядно.

Вот и готова плавающая форма обратной связи, да ещё и с защитой от спама. Как реализована защита от спама вы можете прочитать здесь.

И в завершение, в преддверии первого весеннего праздника, хочу поздравить милых женщин с Международным женским днём. Желаю, чтобы рядом с вами всегда был мужчина, с которым вы всегда будете себя чувствовать самой любимой, самой желанной, самой счастливой! С 8 Марта, дорогие женщины!

С уважением, Максим Зайцев.

Понравилась статья? Поделиться с друзьями:
Комментарии: 12
  1. Сергей

    Интересно сообщение в обратной связи прочитать можно только в админчасти блога или его можно отправить по емейл?

    1. Максим Зайцев (автор)

      Здравствуйте, Сергей. Сообщения как раз и приходят на почтовый ящик, который вы указываете в настройках файла-обработчика.

  2. Василий

    Максим, привет! Вижу ты перешел на новую тему. Дам пару советов со стороны. Сделай зеленый шрифт более темным, его плохо видно. На отдельных страницах шапка наезжает на хлебные крошки.

    1. Максим Зайцев (автор)

      Вася, привет. Я тему сменил, но всё ещё продолжаю дорабатывать. Я вот как раз думал доделать всё и спросить у тебя твоё мнение. Ну ещё спрошу ;-)
      С цветом я тоже заметил, на разных мониторах по разному смотрится. Попробую конечно сделать потемней, но в этой теме так всё сложно. Я месяц трудился над микроразметкой и всё зря. Обновление и всё слетело, так это я и так всё делал через функции темы. Автор сменил название API ключей и всё пошло крахом, сайт накрылся.
      С хлебными крошками я тоже косяк заметил, в хроме. В остальных браузерах вроде работает нормально. Лечится, если шапку сделать фиксированной. Но, я же хочу чтобы меню было доступно всегда. Так что пока не придумал как решить эту проблему.
      Так что буду дальше продолжать работу, за любой совет буду благодарен :-)

  3. Vlad

    Привет. Наконец-то долгожданное обновление! =)

    1. Максим Зайцев (автор)

      Влад, привет. Да, обновил тему. Правда, работы ещё много, но видимая часть уже сделана.

  4. Андрей

    Как изменить размер иконки? Физическое увеличение ничего не дает, в стилях не нашел.

    1. Максим Зайцев (автор)

      Здравствуйте, Андрей. Способов довольно много, можно скачать расширение «Линейка — Ruler» для браузеров, а можно скачать нужный файл и узнать размер через свойство.

  5. Андрей

    А как поменять ширину картинки на иконке где конвертик, а то хочу свою кнопку поставить, но высота редактируется и ширина нет?

    1. Максим Зайцев (автор)

      Здравствуйте, Андрей. За размеры блока с конвертиком отвечает класс .mail .contact-tabs li img и стили ширины и высоты по 24 пикселя. Меняйте их всё будет как вам надо.

  6. Александр

    А как убрать поле тема , и поле Имя сделать не обязательным???

    1. Максим Зайцев (автор)

      Здравствуйте, Александр. Уберите условия из файла обработчика, относящиеся к имени и теме: if (isset($_POST['name'])) ... и if (isset($_POST['sub'])) ... А в html коде уберите эти поля input class="kontact_input" name="name" … и input class="kontact_input" name="sub" ... Так вы уберёте поля из формы.

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