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

Во фреймворке Webasyst, на основе которого работает Shop-Script, есть встроенная возможность быстро добавить форму обратной связи на любую страницу сайта:

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


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

Несколько хитростей

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

Сообщения, которые посетители сайта оставляют через форму обратной связи, отправляются на email-адрес, указанный в поле «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>


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

  • +1
    Круглова Елена Круглова Елена 28 октября 2015 14:04 #

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

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

    А когда клиент указывает свое имя и емейл, то мы вместо имени и емейла покупателя видим всегда один и тот же адрес отправителя- технический адрес хостинга.

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

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

    Спасибо!

    • +1
      Михаил Ушенин Михаил Ушенин 29 октября 2015 03:47 #

      1. В коде блока site.send_email_form замените строку

      <div class="wa-form">

      на

      <div class="wa-form send-email-form">

      2. В этом же блоке после блока

      <style>
      ...
      </style>

      добавьте

      <script>
      $(function() {
          
          $('.send-email-form').submit(function() {
              var form = $(this);
              var body = form.find('[name="body"]');
              body.val(
                  form.find('[name="name"]').val() + "\n"
                      + form.find('[name="email"]').val() + "\n\n"
                      + body.val()
              );
          });
          
      });
      </script>

      Этот JavaScript-код будет при попытке отправки сообщения копировать значения из полей "Имя" и "Email" в начало текста сообщения.

    • +1
      Romanson Romanson 9 июня 2016 15:02 #

      А как добавить ещё поле? Допустим телефон?

      • +2
        Lazarev Denis Lazarev Denis 18 апреля 2017 17:22 #

        Перейдите в wa-system\view\waViewHelper.class.php, в самом файле найдите функцию "sendEmail"(данная функция отвечает за форму обратной связи) и добавьте свои поля. После чего перейдите на сторону админа Webasyst->Сайт->Блоки->Выберите блок, который отвечает за отправку формы(по умолчанию блок имеет название "site.send_email_form") и измените или добавьте DOM-элементы.

        Вуаля и все готово! ;)

      • +1
        Сыроежкин Сергей Сыроежкин Сергей 14 августа 2016 22:57 #

        в базу ничего не пишется что ли???

      • +1
        Shvets Viktoriia Shvets Viktoriia 26 сентября 2016 13:50 #

        Подскажите, пожалуйста. Письма бросаються в спам, что поменять нужно? Спасибо большое.

        • +1
          Minya Jam Minya Jam 9 октября 2016 00:42 #

          Проверьте наличие ip-адреса в СПАМ базах, например тут

          Проверьте MX записи DNS, а также остальные, тут коротко расписано

        • +1
          Юлия Юлия 12 января 2017 19:17 #

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

          Как в форму можно добавить дополнительные поля , например телефон, модель, серийный номер?

          • 0
            Михаил Ушенин Михаил Ушенин 13 января 2017 09:24 #

            Есть несколько вариантов решения: дорогие либо сложные.

            Дорогой: использовать для формирования форм обратной связи приложение "Поддержка": https://support.webasyst.ru/3478/request-form-create-and-publish/

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

          • +1
            alesh alesh 23 февраля 2017 15:06 #

            Как сделать, что бы отправителем указывался e-mail клиента, а не тот что прописан в инсталлере?

            • +1
              Михаил Ушенин Михаил Ушенин 27 февраля 2017 15:40 #

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

            • +1
              Малютина Анна Малютина Анна 23 февраля 2017 16:39 #

              можно ли встроить форму не на страницу магазина, а в какую-либо категорию в товарах? html не встраивается... не положено или неправильно делаю что?

              • +1
                Михаил Ушенин Михаил Ушенин 27 февраля 2017 15:42 #

                Для того чтобы код Smarty срабатывал в HTML-описаниях категорий или товаров, нужно создать конфигурационный файл wa-config/apps/shop/config.php:

                <?php
                
                return array(
                    'can_use_smarty' => true,
                );
                

                и очистить кеш в Инсталлере.

              • +1
                Syrbek.RU Syrbek.RU 10 марта 2023 11:46 #

                Добрый день, всем. Все работает. Но тут к сожалению ограниченные возможности формы. Изучил обработчик wa-system/view/waViewHelper.class.php

                Возможно ли расширить функционал, Например: 

                - добавить другие свои поля для разного типа
                - при успешной отправке данные записывать в таблицу (для дальнейшего отчета)

                Понимаю что изменение системного файла  нельзя так как при обновлении все сотрется. возможно ли для таких целей написать плагин например? Или в блоке site.send_email_form можно свой Php код добавить синтаксисом в smarty?

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

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

                Раздел помощи работает на основе приложения «Хаб»