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

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

Как добавить такую форму на свой сайт

  1. Откройте приложение «Сайт» и перейдите в раздел «Блоки».
  2. Выберите блок с названием «site.send_email_form».
  3. Щелкните по фрагменту кода под надписью «Встроить на страницу или в шаблон».
  4. Скопируйте выделенный фрагмент кода и вставьте его в HTML-код любой страницы или шаблон темы дизайна.

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

Сообщения, которые посетители сайта оставляют через форму обратной связи, отправляются на email-адрес, указанный в поле «Email-адрес для уведомлений» в разделе «Системные настройки» приложения «Сайт».

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

Если вы не хотите изменять содержимое этого поля, то можно указать адрес получателя сообщений обратной связи в исходном коде блока «site.send_email_form». Для этого добавьте нужный email-адрес внутри кавычек, как показано ниже:

$wa->sendEmail("admin@mycompany.ru", $errors)

Можно указать и несколько адресов получателей:

Простой формат (только адреса)

{$wa->sendEmail(['address1@domain.ru', 'address2@domain.ru'], $errors)}

Расширенный формат (адреса получателей с их именами)

{$wa->sendEmail(['address1@domain.ru' => 'Имя1', 'address2@domain.ru' => 'Имя2'], $errors)}

Как убрать поле для ввода защитного кода (капчи)

Для защиты от автоматически добавляемых сообщений (спама) в форме обратной связи используется поле для ввода защитного кода (капчи).

Если вы считаете, что необходимость вводить защитный код мешает посетителям вашего сайта отправлять сообщения, то отключите это поле. Для этого перед строкой с вызовом метода {$wa->sendEmail(...)} добавьте следующее:

{$wa->storage(['captcha', $wa->app()], '')}

Таким образом вы «говорите» фреймворку Webasyst, что правильной капчей является пустая, т. е. сообщение отправится, если ничего не написать в поле для ввода защитного кода.

Теперь осталось убрать поле для ввода защитного кода, чтобы оно не вводило в заблуждение посетителей сайта. Для этого удалите из исходного кода блока «site.send_email_form» следующий фрагмент:

<div class="wa-field">
    <div class="wa-value">
        {$wa->captcha(!empty($errors.captcha))}
        {if !empty($errors.captcha)}<em class="wa-error-msg">{$errors.captcha}</em>{/if}
    </div>
</div>


17 комментариев

  • +2
    Yuri Manko Yuri Manko 3 сентября 2015 08:48 #

    Я хочу убрать не только каптчу, но и поле Email, например. Как это возможно сделать?

  • +3
    Владимир Владимир 23 сентября 2015 03:18 #

    Подскажите, что надо сделать, чтобы почтовики не отправляли сообщения с формы обратной связи в спам?

    Сейчас все сообщения туда уходят.

    • +1
      Иван Иван 11 мая 2016 13:06 #

      В спам сообщения уходят в том числе из-за адреса From, который по умолчанию берётся из формы, так делать не нужно. Укажите в адресе From noreply@vashsite.ru, добавьте в заголовки письма Reply-To с адресом из формы.

    • +3
      axel999x axel999x 7 июня 2016 16:53 #

      Добрый день!

      А как сделать поле ввода телефона?

      И Возможно ли сделать отправку с разных страниц сайта на разные адреса с разными темами письма?


      • +4
        Zhak Zhak 17 августа 2017 17:54 #

        Приветствую!

        Столкнулся с необходимостью добавить в стандартную форму обратной связи два дополнительных поля: Телефон и Адрес

        Решил поделиться инструкцией вероятно кому-нибудь пригодится:

        1) Находим в каталоге wa-system/view файл: waViewHelper.class.php

        2) В этом файле находим функцию public function sendEmail($to, &$errors)

        3) Далее в блоке:

         $body = _ws('Name').': '.htmlspecialchars($this->post('name'))."<br>\n".
                _ws('Email').': '.htmlspecialchars($email)."<br><br>\n".$body;

        вставляем поля телефона и адреса:

         $body = _ws('Name').': '.htmlspecialchars($this->post('name'))."<br>\n".
            _ws('Phone').': '.htmlspecialchars($this->post('phone'))."<br>\n".
            _ws('Address').': '.htmlspecialchars($this->post('address'))."<br>\n".
                _ws('Email').': '.htmlspecialchars($email)."<br><br>\n".$body;

        Если необходимо после этого блока можно сделать проверку на заполнение.

        4. Заходим в режиме администратора и редактируем блок обратной связи (у меня он называется: site.send_email_form)

        5) В нужном месте вставляем:

          <div class="wa-field">
            <div class="wa-name">[s`Phone`]:</div>
            <div class="wa-value"><input name="phone" type="text" value="{$wa->post("phone")|escape}"></div>
          </div>
          <div class="wa-field">
            <div class="wa-name">[s`Address`]:</div>
            <div class="wa-value"><input name="address" type="text" value="{$wa->post("address")|escape}"></div>
          </div>

        как показано ниже:

        6) Результат:
        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 18 августа 2017 09:24 #

          Вы забыли одну "мелочь": после каждого обновления фреймворка Webasyst изменения в PHP-файле придётся выполнять повторно.

        • +2
          Андрей Какурин Андрей Какурин 18 ноября 2017 16:10 #

          Меня вот попросили добавить поля в Обратную форму связи. А сайт крутится в облаке. доступа к системным файлам нет.

          И Ваше решение слетит при первом же обновлении.

          Пришлось искать другое решение. Тоже с костылями, но подходит и тем кто в облаке.

          Задача добавить в форму VIN, Модель/год выпуска, Необходимая эмблема

          Идем в сайт-> блоки находим site.send_email_form

          Добавляем поля в разметку формы.

          <div class="wa-field">
              <div class="wa-name">VIN:</div>
              <div class="wa-value"><input name="VIN" type="text" value=""></div>
            </div>
            
            <div class="wa-field">
              <div class="wa-name">Модель/год выпуска:</div>
              <div class="wa-value"><input name="model" type="text" value=""></div>
            </div>
            <div class="wa-field">
              <div class="wa-name">Необходимая эмблема:</div>
              <div class="wa-value"><input name="emblema" type="text" value=""></div>
            </div>

          выше формы вставляем javascript, который перед отсылкой формы вставит в тело сообщения данные из доп. полей.


          <script>
          function addFieldsToMessage(){
          var field_vin = document.getElementsByName('VIN')[0].value;
          var field_model = document.getElementsByName('model')[0].value;
          var field_emblema = document.getElementsByName('emblema')[0].value;
          var message = document.getElementsByName('body')[0].value;
          message = (field_emblema=='')? message: ('Необходимая эмблема:'+field_emblema+';'+message);
          message = (field_model=='')? message: ('Модель/год выпуска:'+field_model+';'+message);
          message = (field_vin=='')? message: ('VIN:'+field_vin+';'+message);
          document.getElementsByName('body')[0].value=message;
          }
          </script>

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

          <form method="post" action="">

          Исправляем на

          <form method="post" onsubmit="addFieldsToMessage(); return true;" action="">

          Будет небольшой косяк, если ввести капчу неверно, то доп поля будут пустыми, а текст сообщения уже будет с доп полями.

          Пришлось разбирать сообщение и заполнять доп поля при новой загрузке страницы

          В конец блока вставляем скрипт разбора, вызывается один раз при загрузке формы.

          <script>
          $(function (){
          var message = document.getElementsByName('body')[0].value;
          var arr = message.split(';');
          message='';
          arr.forEach(function(item){
          	var arr1=item.split(':');
          	switch(arr1[0]){
          		case 'Необходимая эмблема':document.getElementsByName('emblema')[0].value=arr1[1]; break;
          		case 'Модель/год выпуска':document.getElementsByName('model')[0].value=arr1[1]; break;
          		case 'VIN':document.getElementsByName('VIN')[0].value=arr1[1]; break;
          		default: message = message + item; break;
          	}
          });
          document.getElementsByName('body')[0].value = message;
          });
          </script>

          Форма выглядит так


        • +4
          Yury Yury 13 апреля 2017 12:13 #

          В связи с внесением в закон новых оснований для штрафа (Федеральный закон от 07.02.2017 №13-ФЗ) хотелось бы добавить в код формы обратной связи реализацию функции получения согласия.
          Вот основание для беспокойства: "Размещение формы обратной связи на сайте расценивается как сбор информации о гражданах. Значит, компания должна выполнить обязанности оператора персональных данных. А именно: уведомить Роскомнадзор о намерении собирать и обрабатывать персональные данные, получить согласие субъекта, разработать политику конфиденциальности и обеспечить неограниченный доступ к ней. С 1 июля 2017 года отсутствие такой политики обойдется компании в 30 тыс. руб. При разработке формы обратной связи реализуйте функцию получения согласия: поставить соответствующую отметку до отправки анкеты."
          Так что было бы не плохо если бы вы обратили на это внимание. Может кому то нужна форма обратной связи.

          • +2
            BM WEB BM WEB 6 июня 2017 15:03 #

            Поддерживаю Вас! их коробки формы шопскрипта вообще не как не настроить, все костылями!

            По поводу закона не забудьте еще в Роскомнадзор заявление направить)

          • +2

            Описанный Вами в статье код для отключения капчи

            {$wa->storage(['captcha', $wa->app()], '')}

            не действует на google reCaptcha, подскажите как отключить гугл reCapthca

          • +1
            Алексей Алексей 26 ноября 2017 16:56 #

            Подскажите, пожалуйста, как добавить поле "Тема" (или хотя бы отредактировать то, что туда пишет Вебасист). После последнего апгрейда русский текст зачем-то заменили английским.

            • +1
              Михаил Ушенин Михаил Ушенин Webasyst 27 ноября 2017 09:45 #

              Восстановите оригинальное содержимое блока формы обратной связи. Или замените фрагмент вида

              [s`Website request`]

              на

              [s`Request from website`]

              или на любой текст по-русски в строке вида

              <input type="hidden" name="subject" value="[s`Website request`]">
            • +1
              pYmpYY pYmpYY 8 декабря 2017 16:02 #

              А если две формы на страницу? никто не знает как это реализовать?

            • +1
              VasKov VasKov 3 апреля 2018 18:20 #

              Чуток покрасивее её сделать можно?

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

              Чтобы добавить комментарий, зарегистрируйтесь или войдите